合肥工业大学版net题库.doc

上传人:s****u 文档编号:12813205 上传时间:2020-05-26 格式:DOC 页数:21 大小:151.50KB
返回 下载 相关 举报
合肥工业大学版net题库.doc_第1页
第1页 / 共21页
合肥工业大学版net题库.doc_第2页
第2页 / 共21页
合肥工业大学版net题库.doc_第3页
第3页 / 共21页
点击查看更多>>
资源描述
一、填空1、以公共运行时(CLR)为目标的代码称为 托管代码2、CLR 中的自动内存管理功能技术称为 垃圾回收 3、CLR通过 通用类型系统(CTS) ,实现严格的类型和代码验证,4、可移植可执行文件(PE)包含 元数据 和以Microsoft中介语言(MSIL)形式存在的代码5、程序集 构成了部署,版本控制,重复使用,激活范围控制和安全权限的基本单元6、类型System.Collection.Anaylist的命名空间为System.Collections7、CLR中 应用程序域 可提供与独立进程间等隔离级别,8、bool 类型的别名是 System.Boolean9、语句 typeof(bool)的运行结果是:System.Boolean10、NET Framwork中的所有类均从Object 派生11、所有值类型均隐式派生自 System.ValueType12、C是可为null 的 int型变量,语句int d=c ? -1,的含义是:c为空d等于-1否则d等于c13、在不安全的上下文中,类型可以是指针类型,值类型和引用类型。14、String 对象是不可变的,如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类15、多态,封装和继承是面向对象编程的三大支柱。16、声明抽象类和抽象方法的关键字是 abstract17、声明分部类和分部方法的关键字是 partial18、修饰符internal 限定类型或成员只能被同一程序集中的任何代码访问19、修饰符 protected intemal限定类型或成员可被同一集中的任何代码或其他程序集中的任何派生类访问1、基类中虚方法(virtual)可以被派生类重写或覆盖,重写或覆盖需使用关键字:override2、System.Object类是C#所有类的基类或根3、C#中一个类可以继承多个接口,但只能有一个基类4、在C#中数据类型有两类,引用类型和值类型5、值类型存在堆栈中,引用类型存储在托管内存中的堆(内存)6、值类型转换为object类型或其派生类型,称为装箱,反之称为拆箱7、在C#中实现循环的语句有for do-what while和foreach8、在C#中实现异常处理的语句有try catch和finally9、语句using.System的作用是导入命名空间10、在C#中有一维,多维和交错数组,语句“charA1”表示A1是交错数组11、属性提供一种灵活的机制实现对类私有字段的读写,本质上是公共方法,它使用的访问器有get和set,只读属性将没有set访问器12、运算符is和as与引用类型转换相关,其中运算符is:检查对象是否与给定的类型兼容as:用于检查在兼容的引用类型之间执行某些类型的转换选择(注意选项不一定和题库一样!题号加问号的不太确定)1. System.String是引用和类型3.数组类型为System.Array,A数组作为ref关键字声明的参数传递时,数组必须在调用前在方法外部实现明确赋值,在方法内部对数组所做的任何参数,包括用new重建数组,都将反映到原先数组上()B数组作为out关键字声明的参数传递时,数组必须在方法外部明确赋值,在方法内部对数组所做的任何修改,也将反映到原先的数组上()/out传递参数时不需要事先初始化,但必须在方法中初始化Cpararns允许指定一个方法的参数的数量是可变化的,在调用时给定参数个数()D数组作为in关键字声明的参数传递时,向方法提供位于托管堆的数组内存对象,在方法内部使用new重建数组参数时,程序将分配位于托管堆的另外一个位置用于存储创建的数组参数对象,而不是指向原有的托管堆内存位置(?)课件太多没找到/对于泛型类型参数,in 关键字指定该类型参数是逆变的。 可以在泛型接口和委托中使用 in 关键字4、关于迭代器说法错误的是( )A、迭代器是返回相同类型的有序数值序列的一段代码()B、迭代器可用作方法、运算符或 get 访问器的代码体。()C、迭代器使用yield break语句一次返回每个元素,用yield return结束迭代()/反了!D、可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用()E、迭代器的返回类型必须为IteratorEnumerable,IEnumerator,IEnumerablet(T)或IEnumerator(T)()/IteratorEnumerable应该为IEnumerable5、关于as运算符说法错误的是( )A、as运算符是一种类型转换符,用来在两个引用类型的对象之间进行类型转换,如果转换失败将转换为null()B、as运算符之后可以是值类型数据,即该运算符支持值类型对象的转换,不会引起编辑错误()/as运算符之后不被不能是值类型数据类型,即该运算符不支持值类型对象的转换,否则将会引起编辑错误。C、as运算符支持类型数据到object类型的转换,这时对值类型遍历进行的是一个装箱操作错误()D、as运算符用于引用类型的转换盒值类型的装箱,转换失败时,将转换为null,而不会引发异常()E、as运算符不能用于自定义的类型转换,当需要进行用户自定义的转换时,应使用cast来转换()6、C#中用于声明匿名类型的关键字是()A、var B、dynamic C、object D、params7、选出下面程序段中的错误语句( )Decimal myMoney = 99.9m;double x = (double)myMoney;A、myMoney = (decimal)xB、myMoney = 300C、decimal xx = myMoney+x()/错误1运算符“+”无法应用于“decimal”和“double”类型的操作数D、decimal xx = myMoney+3008.选出下面程序段中会引发异常的语句Int i=123Aobject o=iBobject o1=(object)ii=456Cint j=(int)oDint j=(short)o/选项有点乱 反正是D错了,未处理 System.InvalidCastException Message=指定的转换无效。9、试选出错误的语句( )A、double?d1 = nullB、bool flag = null ()/ 加问号!C、char letter = aD、int?arr = new int?10?10.在下列程序段中,绝对不会出现编译错误和运行异常的语句为Int?n=nullAint m1=n()/缺少强制转换Bint m2=(int)n;()/null强制转成int有问题Cint m3=nValue;(?)/没看明白,应该抄错了int b=10;Dint?n2=n;()?11、试从下面程序段中选出有语法错误的语句( ) Bool?b = falseA、 object bBoxed = bB、 bool b2=(bool)bBoxedC、 if(b=null)D、 if(bBoxed=null)/执行过了 都对应该只有D可能有问题12、关于结构,说法正确的是;A、 结构是轻量级类,故它是引用类型()/值类型B、 结构中可声明无参构造函数()/只能声明有参构造函数C、 结构声明中允许对结构成员直接初始化实例字段()/不可以,只能在构造函数中初始化D、 结构不能继承和派生,但可以实现接口()E、 必须使用new关键字来创造结构实例()/可以不使用,但是各字段保持未赋值状态,对象不可被使用F、 结构不能用作为NULL类型,不能赋NULL值()/可以13、试从下面程序段中选出违反默认约定的语句enum DaysSun,Mon,Tue,Wed,Thu,Fir,Sat;A.int y=(int)Days.FirB.Days.meetingDay=Days42()/错了没有对的理由,枚举里面找不到42C.enum Range:longMax=2147483648L,Min=255L;D.long x=(long)Range.Max;14、从下面选项中选择错误的( )A、dymatic类型对象会绕过静态类型检查,编译时被假定支持任何操作,改为在运行时解析这些操作()B、类型dynamic只在编译时存在,运行时不存在()C、var本身不是类型,只是告诉编译器该变量类型需要推断()D、vara=new 1,10,100,1000()/无法将类型“int”隐式转换为“var”15、下面关于异常处理描述错误的是( )A、各种类型的异常最终都是由System.Exception派生而来()B、try块后跟一个或多个catch子句,这些子句按特定程度由低到高顺序排列。()/由高到低C、无论是否引发异常,finally块始终会执行,常用释放资源()D、在可能引发异常的语句周围使用try 块,一旦try块中发生异常,控制流将跳转到第一个关联的异常处理程序,如果给定异常没有异常处理程序,则程序将停止执行,并像是一条错误信息。()E、在catch块中可使用throw语句再次引发已由catch语句捕获的异常,也可引发新异常。()16、与string empty相等的是( )A、nullB、”C、D、” “17、关于ref参数和out参数,说法错误的是( )A、ref关键字声明的参数传递,参数必须在调用前在方法外的事先明确赋值()B、out关键字声明参数传递,参数必须在方法内部明确赋值()C、方法内部对参数所作的任何修改,都将反映到原先的参数上()D、在方法的声明中需显示加上ref和out,能在调用语句中省略(错)/当然不可省略18、下面关于虚方法说法错误的是( )A、虚方法允许您以统一方式处理多组相关的对象()B、virtual关键字用于修饰方法、属性、索引器或事件声明,派生类可重写它们()C、virtual修饰符不能与static,abstract,private或override修饰符一起使用()D、根据对象的运行时类型,确定使用虚方法的哪个版本,实现静态多态()/确定使用替换方法的哪个版本(猜的不确定)19、关于override和new修饰符,说法错误的是( )A、重写方法与原方法匿名必然相同,签名含修饰符()B、重写的基类方法或属性必须是virtual,abstract,或override的()C、不能使用new,static或virtual修饰符来修饰override方法()D、除非sealed override修饰来停止虚拟继承,虚拟成员将永远都是虚拟的()/派生类就可以通过使用 override 关键字来重写事件行为。/重写虚属性的属性还可以是 sealed 的,这表示它对派生类不再是虚拟的。20、关于抽象类和方法,说法错误的是( )A、abstract修饰符可用于类,方法,属性,索引器和事件()B、抽象类可以用来创建实例()/不可以C、不能用sealed修饰符来修饰抽象类()D、抽象方法是隐式的虚方法,只允许在抽象类中使用抽象方法声明()E、声明时不能有实现,即抽象方法没有抽象类版本,而虚方法可有声明类版本()F、从抽象类派生的非抽象类必须实现集成的所有抽象方法和抽象访问器()21、下面代码中执行基类构造函数的语句是() Public class BaseClasspublic BaseClass() Public virtual void GetInfo()Public class DerivedClass:BaseClass public string name;A、 public DerivedClass:base() /下面的几个选项有点乱,反正A是对的B、public DerivedClass(string name):this() this name=name Public override void GetInfo()C、base(intInfo()D、Test tt:string str=tt output(this)Class Test public static string output(DerivedClass E) return E name ?22、关于using语句确保资源释放的语句( )A、using Project = PC.MyCompany.Project;B、using System.Text;C、using AlicasToMyCompanyProject = NAmeSpacilMyClassD、using SystemTestE、using(Font font1=new Font(Arial,10.0f)byte charset=fond1.GdiCharset;/using会自动销毁using后面括号里创建的对象,而不是间的对象/查看using的用法23、关于const和readonly说法错误的是( )A、只有内置类型(System.Object除外)可声明为const()B、C#不支持const方法,属性或事件()C、不允许在常量声明中使用static修饰符()D、引用类型常量的可能值为string和null()E、常量和readonly字段一样,可以在声明或构造函数中初始化()/const声明时同时初始化,readonly可以声明时初始化,还可以在构造函数中初始化F、const字段是编译时常量,readonly字段可用于运行时常量()24、关于析构说法错误的是( )A、析构函数用于创建类的实例()/在销毁类实例的时候,程序将自动调用析构函数,释放当前实例占用的托管内存。B、不能在结构中定义析构函数,只能对类使用析构函数()C、一个类只能有一个析构函数()D、无法继承或重载析构函数()/在父类中定义的析构函数,同时被子类继承E、无法调用析构函数,它们是被自动调用的()F、析构函数既没有修饰符也,也没有参数()/还没有返回类型25、关于构造函数说法错误的是( )A、静态构造函数用于初始化静态数据,没有访问修饰符和参数,自动调用()B、默认构造函数有参数()/无参数C、实例构造函数用于创建实例()D、私有构造函数常用于阻止类被继承()E、拷贝构造函数用于同类型对象间的复制()26、关于静态类和方法说法错误的是( )A、静态类仅包含静态成员,是密封的,不能包含实例构造函数,但可实例化()/静态类只能包含静态成员,不能使用 new 关键字进行实例化。 在程序加载时,静态类的一个副本将加载到内存中,可通过类名称访问该类的成员。 类和结构都可以包含静态成员B、类和静态类可以有静态构造函数()C、静态成员不能访问非静态成员,除非在方法参数中显示传递()D、无论对一个类创造多少实例,它的静态成员都只有一个副本()E、静态方法可以被重载但不可以被重写()F、不可以使用this来引用静态方法或属性访问器()27.关于属性的描述A接口中的属性有方法体()/没有方法体B自动实现的属性不需要指定对应的私有字段,但需同时声明get和set访问器()C仅当属性或索引器同时get和set访问器时,才允许对其中一个访问器使用修饰符()D派生类重写基类的属性,须保持访问器的可访问级别的一致()E如实现仅有一个访问器的接口时,另一个访问器的实现可有访问修饰符()F实现接口中的访问器不能有访问修饰符()/这几个正确的选项在课件上应该都有,我没找到28. 关于嵌套类型(课件上的一些知识点)在类或结构内部定义的类型称为嵌套类型。不管外部类型是类还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。嵌套类型(或内部类型)可访问包含类型(或外部类型)。 若要访问包含类型,请将其作为构造函数传递给嵌套类型。嵌套类型可访问包含类型的私有成员和受保护的成员(包括所有继承的私有成员或受保护的成员)。29.关于接口A接口类似抽象类,任何继承接口的非抽象类型一定要实现接口的所有成员()B接口可以直接实例化()/这句话决定了这个题的难度C接口可以是命名空间或类的成员,可包含方法,属性,索引器和事件,但不具有体。()D类和结构可以继承多个接口,接口本身可从一个或多个基接口继承()E不同接口中的同名方法,为区分需采用显示实现,否则同名方法将采用相同实现()F当基类型列表包含基类和接口时,基类必须是列表中的第一项()G显式实现的成员不能通过类实例访问,而只能通过接口实例访问()/具体知识点要看看接口那一章的PPT30.关于分部类和分部方法,说法错误的是A所有部分都必须使用partial关键字,位置紧靠在class,struct或interface前面()B各部分的可访问性相同()C某部分的添加某个修饰符,所有部分都具有该修饰符()D所有部分指定的基类必须一致,忽略基类的部分不能继承()/指定基类的所有部分必须一致,但忽略基类的部分仍继承该基类型。E各部分可有不同接口,所有部分共享()F分部方法声明必须以partial开头,并且方法必须返回void()31. #region #endregion本语句不考32.关于类型A类可以实现多个接口,但只能有一个基类()B类是可切分的,分布于不同源文件,称为partial class()C静态类只能包含静态成员()D密封类(sealed修饰)能被其他类继承()/不能E抽象类可以被继承且能创建对象,可包含方法体()/?谁创建对象,抽象类反正不能33.关于索引器A索引器使对象可以象数组一样被索引()B使用get和set访问器,索引器使用关键字value赋值()/get不清楚,set确定是C用this关键字来定义索引器()D无论你如何定义查询机制,索引器都只能使用整数值来索引()/索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。E索引器可以重载()F索引器可有多于一个参数,如访问二维数组()34.关于委托A委托类似C+中的函数指针()B可使用命名和匿名方法实例化()C允许方法以参数形式传递()D多方法不可对应单个事件,即一个方法对应一个事件()/一个事件可以有多个订阅者E方法与委托的签名不必精确匹配()F委托的协变与逆变主要针对父子类而言,前者针对返回值,后者针对方法参数()/逆变用in关键字,而协变用out关键字,输入参数类型为逆变,返回值类型为协变G泛型委托可以定义自己的类型参数()35.关于事件A事件是委托的特殊类型,仅能从声明的类中唤醒()B派生类不能唤醒基类声明的事件,可采用调用或覆盖唤醒方法的形式()C事件可有多个订阅者,无订阅者的事件也会被调用()/不会被调用D标准的事件委托模式使用EventHandler和EventArgs类,针对无附加数据的事件;()/不太确定E当事件带数据时,需从EventArgs派生新的事件数据类,并声明相应的委托()/通常是用EvengArgs做基类,是个通常的约定做法(以下大段的代码都经过Visual Studio验证,有些注意自己加命名空间之类的辅助的东西)三、程序改写或补全1、下面程序采用lambda表达来实现时间预处理方法的关联,试改写为匿名方法实现。(去年考了,注意答案和题干可能会互换) Publisher.RaiseCustomEvent+=(o,e)= String s=o.ToString()+” ”+e.ToString(); Console.WriteLine(s);答案:/就是把(o,e)改为匿名的 然后把那个lambda运算符去掉 publisher.RaiseCustomEvent += delegate(object o, CustomEventArgs e) string s = o.ToString() + + e.ToString(); Console.WriteLine(s); ;2、试为下面代码中的重写属性添加具体的读写访问器代码Public class Parent Public virtual int TestProperty /Notice the accessor accessibday level Protected set /No access modifier is used here Get return 0;public class kid:parent private int testproperty=0public override int tsetproperty/在此输入代码答案:/已经运行通过namespace ConsoleApplication2 class Program static void Main(string args) public class parent public virtual int TestProperty /Notice the accessor accessibday level protected set /No access modifier is used here get return 0; public class kid:parent private int testproperty=0;public override int tsetpropertyprotected set testproperty=value; get return tsetproperty; ?3.试在类IndexerClass中实现ISomeInterface接口索引器,要求考虑数组位数超出问题 Pulic interface ISomeInterface Int thisint index get; set; Public interface IExample Int thisint index get; set; Class IndexerClass:ISomeInterface.IFxample Private int arr=new int100; Public int ISomeInterface.thisint index get return arrindex; set arrindex=value; Public int IExample.thisint.index 答案:/反正这段代码是,大小写、符号、字母错的很多,而且我分不清哪些是题干那些是答案 以下是课件上的运行通过的一段代码(貌似没考虑数组位数超出问题(_)):public interface ISomeInterface int thisint index get; set; public interface IExample int thisint index get; set; class IndexerClass:ISomeInterface private int arr=new int100; public int thisint index get return arrindex; set arrindex=value; /public int IExample.thisint index 四、写出程序运行结果 1、 试写出程序运行结果 using System; public enum ArrivalStatus Unknown=-3, Late=-1, OnTime=0, Early=1 ; public class Example public static void Main() Console.WriteLine(Members of 0:, typeof(ArrivalStatus).Name); Console.WriteLine(第一种遍历方式:); var values = Enum.GetValues(typeof(ArrivalStatus); foreach (var value in values) ArrivalStatus status = (ArrivalStatus)Enum.ToObject(typeof(ArrivalStatus), value); Console.WriteLine( 0 (0:D), status); Console.WriteLine(第二种遍历方式:); string names = Enum.GetNames(typeof(ArrivalStatus); Array.Sort(names); foreach (var name in names) ArrivalStatus status = (ArrivalStatus) Enum.Parse(typeof(ArrivalStatus), name); Console.WriteLine( 0 (0:D), status); 运行结果:Members of ArrivalStatus:第一种遍历方式: OnTime (0) Early (1) Unknown (-3) Late (-1)第二种遍历方式: Early (1) Late (-1) OnTime (0) Unknown (-3)请按任意键继续. . .2、Flagsenum Days2 None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40class MyClass Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() String names=Enum GetNames(typeof(Days2)Arry Sort(names)Console WriteLine(“Members of0”,typeof(Days2)Name)Foreach(var name in names) Days2status=(Day2)EnumParse(typeof(Days2)Name) Console WriteLine(“ 0(0 D)”,status) meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine(Meeting days are 0, meetingDays); meetingDays = meetingDays Days2.Tuesday; Console.WriteLine(Meeting days are 0, meetingDays); bool test = (meetingDays & Days2.Thursday) = Days2.Thursday; Console.WriteLine(Thursday 0 a meeting day., test = true ? is : is not); 代码很多错误,完整代码为:using System; public enum ArrivalStatus Unknown=-3, Late=-1, OnTime=0, Early=1 ; public class Example Flagsenum Days2 None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40class MyClass static Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() String names=Enum.GetNames(typeof(Days2);Array.Sort(names);Console.WriteLine(Members of0,typeof(Days2),names);foreach(var name in names) Days2 status=(Days2)Enum.Parse(typeof(Days2),name); Console.WriteLine(0(0:D),status); meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine(Meeting days are 0, meetingDays); meetingDays = meetingDays Days2.Tuesday; Console.WriteLine(Meeting days are 0, meetingDays); bool test = (meetingDays & Days2.Thursday) = Days2.Thursday; Console.WriteLine(Thursday 0 a meeting day., test = true ? is : is not); 运行结果为:Members ofExample+Days2Friday(32)Monday(2)None(0)Saturday(64)Sunday(1)Thursday(16)Tuesday(4)Wednesday(8)Meeting days are Tuesday, Thursday, FridayMeeting days are Thursday, FridayThursday is a meeting day.请按任意键继续. . .3、Flagsenum Days2 None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40class MyClass static Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() String names=Enum.GetNames(typeof(Days2);Array.Sort(names);Console.WriteLine(Members of0,typeof(Days2),names);foreach(var name in names) Days2 status=(Days2)Enum.Parse(typeof(Days2),name); Console.WriteLine(0(0:D),status); meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine(Meeting days are 0, meetingDays); meetingDays = meetingDays Days2.Tuesday; Console.WriteLine(Meeting days are 0, meetingDays); bool test = (meetingDays & Days2.Thursday) = Days2.Thursday; Console.WriteLine(Thursday 0 a meeting day., test = true ? is : is not); string formats= G, F, D, X; foreach (var fmt in formats) Console.WriteLine(meetingDays.ToString(fmt); 运行结果和上面类似无非多了几句:Members ofExample+Days2Friday(32)Monday(2)None(0)Saturday(64)Sunday(1)Thursday(16)Tuesday(4)Wednesday(8)Meeting days are Tuesday, Thursday, FridayMeeting days are Thursday, FridayThursday is a meeting day.Thursday, FridayThursday, Friday4800000030请按任意键继续. . .4、using System;using System.Collections.Generic;using System.Text;namespace SimpleString class Program static void Main(string args) string a = Simple String; string b = a; Console.WriteLine(balabalabalabala:+(object)a = (object)b); b = Changed; Console.WriteLine(balabalabalabala:+(object)a = (object)b); b = Simple String; Console.WriteLine( balabalabalabala:+(a = b); Console.ReadLine(); 运行结果:balabalabalabala:Truebalabalabalabala:Falsebalabalabalabala:True6、as的应用(这是修改后能运行的代码)using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace AsExample class Program static void Main(string args) ArrayList myarray = new ArrayList(); string asstring; myarray.Add(The first string); myarray.Add(23); myarray.Add(The second string); myarray.Add(26); myarray.Add(41); myarray.Add(The third string); foreach (object obj in myarray) asstring = obj as string; if (asstring != null) Console.WriteLine(asstring); else Console.WriteLine(not a string); Console.ReadLine(); 运行结果:The first stringnot a stringThe second stringnot a stringnot a stringThe third string五、问答题(这题无能为力,到课件总结标准答案)1、应用程序域与进程边界的异同官方概念http:/msdn.microsoft.com/ZH-CN/library/kt21t9h7 进程Windows 操作系统通过在各应用程序自己的进程中运行它们来保护各应用程序不受其他应用程序的影响。如果某个应用程序失败了,只有它的进程会受到影响;其他进程中的应用程序可以继续执行。当然,由于一个进程中的内存地址在其他进程中没有任何意义,因此在一个进程中调用来自某个其他进程的函数可能会很复杂。封送处理是针对以下事件给出的术语:当调用和所有参数都打包在一个进程中,但在另一个进程中解除打包以便跨进程边界的调用能够成功时发生的事件。应用程序域在托管环境中,应用程序域(或逻辑进程)和上下文以最低的成本提供隔离和安全,并且通过利用托管代码是可验证的类型安全代码这一事实以及其他事实,使其扩展能力比操作系统进程强。每个托管应用程序都运行在应用程序域中,不管其他应用程序是否代表它启用了域,也不管宿主环境是否为它启用了域。.NET 远程处理可帮助提供基础结构,以便以一种直接的方式在应用程序域之间进行通信,这种通信受安全技术的保护。2、 元数据的功能及其包含的主要信息元数据是一种二进制信息,用以描述存储在CLR中的可移植可执行文件(PE)或存储在内存中的程序。当编译代码为PE文件时,便会将元数据插入到该文件的一个部分中;而将代码转换为Microsoft中间语言(MSIL),并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,CLR将加载元数据到内存中,并引用它来发现有关代码的类、成员、继承等信息元数据以非特定语言方式描述在代码中定义的每个类型和成员元数据存储以下信息:程序集的说明,包括标识(名称、版本、区域性、公钥)、导出的类型、该程序集所依赖的其他程序集、运行所需的安全权限。类型的说明,包括:名称、可见性、基类和实现的接口;成员(方法、字段、属性、事件、嵌套的类型)。特性,修饰类型和成员的其他说明性元素。3、 C#中的值类型与引用类型的区别存储在堆栈的数据类型就是值类型,存储在内存中堆的数据类型就是引用类型。当值类型的变量被赋值时,在堆栈中创建的是两个相同的数据副本,其中一个变量值的变,不会引起另一个变量的改变。当引用类型的变量被赋值时,在内存堆中创建的是对同一个位置的两个引用。值数据类型的变量在传递的时候,传递的是数据的值;引用数据类型的变量在传递的时候,传递的事数据的地址。4、 结合下面程序,从发布和订阅者两方面说明事件-委托处理机制,要求有语言描述有具体语句。(照片上看不清,所以没办法给大家弄了)这鬼知道怎么描述六、编程题(考了)下面的程序使用迭代器实现了对集合类枚举,试改用索引器来实现,要求。(看不清)public class DaysOfTheWeek : System.Collections.IEnumerable string days = Sun, Mon, Tue, Wed, Thr, Fri, Sat ; public System.Collections.IEnumerator GetEnumerator() for (int i = 0; i days.Length; i+) yield return daysi; class TestDaysOfTheWeek static void Main() / Create an instance of the collection class DaysOfTheWeek week = new DaysOfTheWeek(); / Iterate with foreach foreach (string day in week) System.Console.Write(day + );
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!