1.下列代碼在運行中會發生什么問題?如何避免?
答:會產生運行時錯誤,因為foreach是只讀的。不能一邊遍歷一邊修改。
2.請簡述關鍵字Sealed用在類聲明和函數聲明時的作用
答:類聲明時可防止其他類繼承此類,在方法中聲明則可防止派生類重寫此方法。
關鍵字Seal既然可以聲明類,也可以聲明方法
3.請簡述private,public,protected,internal的區別
4.反射的實現原理?
(以下英文純手打,無百度)
Assembly – 程序集
Class – 類(type)
Method –方法(methodinfo)
Property – 屬性(proinfo)
但是我好像不知道反射原理是什么, 有一個方法是Invoke(“Function_name”)在Unity3d的部分游戲源碼見得比較多,作用和普通Call方法一樣,雖然有些炫技,但是卻是在用反射實現一些游戲邏輯,而且這個游戲邏輯在Android|IOS等平臺也是運行正常,反射的作用主要是跨程序集調用,作為一個基本抽象思維的程序員,應該要理解跨當前運行時的程序集本身當然也一個程序集,C#反射能廣泛應用,并且出錯幾乎是0的原因,應該就是C#程序集的開放,格式不變和不加密(微軟本身反而不支持開源)
5.Net與Mono的關系?
有人說.net只能在 windows上面跑,Mono能跨平臺,是.net的擴展,這說法肯定是不正確的,C#(.Net)自誕生那天起就為了超越JAVA(應該黑絲2003年,.NET一出就硬抄了JAVA所有的特性,還強調所有新特性超越JAVA),C#的GC就是對應JAVA的垃圾回收機制,可惜的是長期以來C# Framework的體積比現在2018年的JVM虛擬機jre8還大
JVM是一次書寫代碼,所有平臺通用
那么C# Framework(.Net)肯定也是支持跨平臺
嗯,MONO是?官方一大段英文其實只要看最后2個就知道based on the ECMA standards
ECMA是什么鬼?你現在只要知道來自歐洲的標準就可以了
由于微軟的不開源,加上.NET的體積比較大,所以開源程序員都希望找到一種可以用C#或者其他書寫,卻是極度簡化版的.NET,結果當年歐洲某小國某程序員秘密組織找到了微軟的內核CIL(Common Intermediate Language通用中間語言,也叫做MSIL微軟中間語言)的一種代碼指令集,CIL可以在任何支持CLI(Common Language Infrastructure,通用語言基礎結構)的環境中運行
(微軟一開始心比較大,目標是所有語言書寫,在所有平臺書運行,開發web,app等所有應用,都通過visual studio,結果被Google和喬布斯打的頭低低,Google在語言性和跨平臺功能一直強調領先,喬布斯主張程序即藝術,iphone1,2狠狠打了Bill Gate2下,國內的c#程序員一直以來是最低下收入的一種程序員)
當時歐洲小國的程序員,優化了CLI并做出了MonoDeveloper這個IDE工具,后來他們成立了一個Xamarim公司,現在已經被微軟收購,開源的MONO也沒有繼續下去
Unity現在應該是基于ECMA這個協議才能得以繼續使用舊版本的開源MONO而不需要和微軟杠上
最近中興被美國狀告事件,類比一下MONO和微軟的關系你就懂了,政治在這里不能多說,我就不提了,但學習程序以外難道你學校就沒有政治課?難道你志愿不是考公務員報效國家?你不理政治,政治會來修理你。
我的推論是,mono是一種中間語言,而內核還是.net的一個簡化版的虛擬機,能跨平臺運行,這個虛擬機類似于jvm虛擬機,提供各種框架,API和程序執行和調用功能,但明顯支持的最強語言還是C#
6.簡述Unity3D支持的作為腳本的語言的名稱
C#
JS
更多關于“unity培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。