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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。