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