已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
新蛋科技应聘考题(笔试题太多了,10多页考卷,要做两个多小时,实在记不完。面试题基本上记完了,有三个人面试,分别考数据库、.NET方面、系统架构三个方面,面试时间两个小时)ASP.NET的生命周期,服务器控件生命周期的各个事件.阶段说明页请求页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。开始在开始阶段,将设置页属性,如 Request 和 Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。页初始化页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。加载加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。验证在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。回发事件处理如果请求是回发请求,则将调用所有事件处理程序。呈现在呈现期间,视图状态将被保存到页,然后页将调用每个控件,以将其呈现的输出提供给页的 Response 属性的 OutputStream。卸载完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性(如 Response 和 Request)并执行清理。服务器控件生命周期(1)初始化-在此阶段中,主要完成两项工作:一、初始化在传入Web请求生命周期内所需的设置;二、跟踪视图状态。首先,页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑。此后,页面框架将调用TrackViewState方法来跟踪视图状态。需要注意的是:多数情况下,Control基类提供的TrackViewState方法实现已经足够了。只有在控件定义了复杂属性时,开发人员才可能需要重写TrackViewState方法。(2)加载视图状态-此阶段的主要任务是检查服务器控件是否存在以及是否需要将其状态恢复到它在处理之前的请求结束的状态。因此该过程发生在页面回传过程中,而不是初始化请求过程。在此阶段,页面框架将自动恢复ViewState字典。如果服务器控件不维持其状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员则不必实现任何逻辑。针对那些无法在ViewState字典中存储的数据类型或者需要自定义状态管理的情况,开发人员可以通过重写LoadViewState方法来自定义状态的恢复和管理。(3)处理回发数据-若要使控件能够检查客户端发回的窗体数据,那么必须实现System.Web.UI.IPostBackDataHandler接口的LoadPostData()方法。因此只有处理回发数据的控件参与此阶段。(4)加载-至此阶段开始,控件树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。此时,开发人员可以通过重写OnLoad()方法来实现每个请求共同的逻辑。(5)发送回发更改通知-在此阶段,服务器控件通过引发事件作为一种信号,表明由于回发而发生的控件状态变化(因此该阶段仅用于回发过程)。为了建立这种信号,开发人员必须再次使用System.Web.UI.IPostBackDataHandler接口,并实现另一方法-RaisePostBackChangedEvent()。其判断过程为:如果控件状态因回发而更改,则LoadPostData()返回true;否则返回false。页面框架跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangedEvent()。(6)处理回发事件-该阶段处理引起回发的客户端事件。为了便于将客户端事件映射到服务器端事件上进行处理,开发人员在此阶段可以通过实现System.Web.UI.IPostBackEventHandler接口的RaisePostBackEvent()方法来实现该逻辑。由此途径,服务器控件将成功捕获回发的客户端事件进行服务器端的相应处理。(7)预呈现-该阶段完成在生成控件之前所需要的任何工作。通常情况下是通过重写OnPreRender()方法完成该工作。需要注意的是:在该阶段,可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段进行的更改则会丢失。(8)保存状态-如果服务器控件不维持状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员不必在该阶段实现任何逻辑。因为这个保存状态的过程是自动的。如果服务器控件需要自定义状态保存,或者控件无法在ViewState字典中存储特殊的数据类型,则需要通过重写SaveViewState()方法来实现状态保存。(9)呈现-表示向HTTP输出流中写入标记文本的过程。开发人员通过重写Render()方法使其在输出流上自定义标记文本。(10)处置-在此阶段中,通过重写Dispose ()方法完成释放对昂贵资源的引用,如数据库链接等。(11)卸载-完成的工作与处置阶段相同,但是,开发人员通常在Dispose()方法中执行清除,而不处理Unload事件。反射的东西.面向对象的几个特点/Lily/archive/2006/02/23/6860.aspx常用的设计模式/fora/archive/2011/04/29/2032829.html于是偶答道:设计模式是面向对象设计思想在应用中总结出的在不同场合下的具体实践方案。一般来讲,编程语言越高级,对面向对象支持越好,运用设计模式就越容易。比如.Net平台本身,就实现了许多设计模式。这时要略停顿一下,面试官一定按捺不住,问“那都有哪些模式呢?”就算义务教学吧,偶滔滔不绝起来:比如项目中添加服务引用,会自动生成服务代理类,实现了典型的代理模式;.Net中对WebRequet、Stream等抽象类的继承扩展,运用了装饰模式;Asp.Net运行时初始化HttpApplication,运用了单例模式;.Net可以通过IEnumerable接口,包含了迭代器模式,而该接口的GetEnumerator方法定义,又是抽象工厂模式的应用数据库中的几个特性,例如游标,索引. 索引:是不是所有的地方都要建索引索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。各种数据类型是引用类型还是值类型数据库的几个语句的完全正确的语法javascript了解是否深入是否有使用过wcf, 谈谈WCF的使用和对WCF的理解同样可能涉及的问题介绍一个项目经验,值传递和引用传递在c#内置基本类型当中,除了object和string外,都是引用类型。同时,自己定义的类,也都是引用类型。因为自定义类全部继承自System.Object。,介绍面向对象的特性,程有封装、继承、多态三大特性,页面传值的几种方式,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer。数据库交互时常用的ADO.NET的类,is和as关键字的区别,关于类型的判断和转换有is和as这2个操作符。具体区别和用法如下is就是处于对类型的判断。返回true和false。如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。另外is操作符永远不会抛出异常。简要介绍aspx页面生存周期,2.0新特性,数据库方面有:数据库的锁表方式和常规的SQL命令等堆和栈的区别 随机提问命名空间的功能随机提问事件功能和触发时间项目经验介绍aspx页面生存周期反射泛型多态masterpageprofile匿名存储过程表的链接membership,prifile,net3.5方面数据库效率方面的控制谈谈你在控制SQL效率方面是怎么考虑的netframwork2.0对1.1做了哪些改进数据库方面笔试题给出下面三个表的关系如下:S(sid,sname),C(cid,cname,teacher),SC(sid,cid,scgrade)1. 写出查询语句得到学生课程成绩表,要求有以下字段:sname,cname,teacher,scgrade select S.sname,C.cname,C.teacher,SC.scgrade from S,C,SC where S.Sid=SC.sid and C.cid=SC.cid2. 写出查询语句得到每个教师所认学科不极格的学生人数。select C.teacher,C.cname,count(SC.scgrade) AS NotPassCount from C,SCwhere C.cid=SC.cid and SC.scgrade=90 then A when SC.scgrade=80 then B when SC.scgrade=60 then C when SC.scgrade=90group by C.teacher) as M1 on M1.teacher=A.teacherjoin(select C.teacher,count(SC.scgrade)as gradeCount_B from S,C,SC where S.Sid=SC.sid and C.cid=SC.cid and SC.scgrade=80 and SC.scgrade=90group by C.teacher,C.cname) as M1 on M1.teacher=A.teacher and M1.cname=A.cnameleft join(select C.teacher,C.cname,count(SC.scgrade)as gradeCount_B from S,C,SC where S.Sid=SC.sid and C.cid=SC.cid and SC.scgrade=80 and SC.scgrade90group by C.teacher,C.cname) as M2on M2.teacher=A.teacher and M2.cname=A.cname数据库方面面试题(以下每个问题包括Sql_Server和Oracle两方面来回答)1、 存储过程在软件开发中有什么样的优势和劣势,有什么样的缺点。答:存储过程的优点:(1) 允许模块化程序设计,以后可以重复调用;可以由专人来完成,并可独立于程序源代码而单独修改。这样一个项目在需求分析、界面设计以及数据库设计完了以后,就可以开始写存储过程了,同一时间数据访问层也可以开始写了。没有必要等详细设计说明完成了在编码的时候才开始写SQL语句。(2) 执行更快存储过程都是预编译命令,执行起来比SQL语句更快。(3) 减少网络流量(4) 可作为安全机制,能够屏蔽数据库,用户并不知道数据库的真实结构。存储过程的缺点最大的缺点就是更换数据库的时候,比如SQLServer数据库换成Oracle数据库时SQLServer数据库的存储过程在Oracle当中完全不能用,只能重新用Oracle的命令来写存储过程。2、 如果你的项目在开发时使用了存储过程,在改换数据库时,会发生什么样的问题,如何解决?答:更换数据库的时候,比如SQLServer数据库换成Oracle数据库时SQLServer数据库的存储过程在Oracle当中完全不能用,只能重新用Oracle的命令来写存储过程。对于这个问题,解决的办法是:采用统一的数据库建模工具,比如(),所有的数据库设计全部在这个统一个数据库建模工具里进行,存储过程也可以在这里完成。最后在根据需要转设成具体的某一种数据库,如果需要SQLServer就转变成SQLServer数据库,如果需要Oracle就转变成Oracle数据库。3、 在存储过程中如果前面的语句发生错误,后面的语句会不会执行,为什么。存储过程是要进行预编译的,它先会检查语法、再检查语义,如果出现错误了,就会提示你,有错,让你进行改正。当语法和语义都正确时,存储过程开始执行,但是在执行过程中可能出现一些错误,比如数据溢出啊,截断字符串啊,该存储过程会继续执行,并执行结束。正确的语句会被执行,而错误的语句是不会执行的,并不会回滚的,如果要回滚的话,要自己添加数据回滚的代码才行。4、 在存储过程中,怎样进行异常处理?对会出现异常的语句加上 begin tryend try ,然后进行异常捕捉:begin catchend catch即可。5、 存储过程的输出参数有几种形式,分别介绍一下,返回值的类型有没有什么限制?答:在SQLServer中有四种形式:(1)、以OUTPUT参数形式返回数据,返回值的类型限制为:整形值、字符值也可以是游标变量,这种形式,可以一次返回多个值。(2)、以Return的形式返回值,返回值的类型限制为:整形值,以表明过程的执行状态。(3)、返回SELECT语句的结果集。(4)、可以返回能从存储过程外引用的全局游标。在Oracle中有三种形式:(1)、以OUT参数形式返回数据,返回值的类型限制为:不可以是大数据类型如:LOB、CLOB、BFILE等。(2)、以IN OUT形式返回数据,返回值的类型限制为:也不可以是大数据类型。(3)、返回SELECT语句的结果集。在Oracle中存储过程没有Return的返回值,只有方法Function才有返回值6、 如果两个不同的存储过程在一个方中被同是调用,当其中任一个发生异常时,要求同时回滚两个存储过程的操作,怎么样处理?答:可以创建另个一个存储过程,在这个存储中,创建一个自组事务,在这个自组事务中分别去调用那两个存储过程。语法如下: create procedure CallTwoProc as begin transaction execute 第一个存储过程 execute 第二个存储过程 commit transaction go 7、 请谈一谈视图的优点(创建视图的必要性)。基于视图的增删改会带来什么样的问题,如何解决样的的问题?答:视图的优点: (1)、可以筛选表中的行。 (2)、可以将多个物理数据表抽象为一个逻辑表,有利于跨库操作。 (3)、防止未经许可的用户访问敏感数据。 (4)、降低数据库的复杂程度。 (5)、视图是一种抽象表,它不占用存储空间。 基于视图的增删改会带来两个的问题: (1)、INSERT、UPDATE和DELETE语句都必须要满足视图的条件,即视图要能看得到的才能INSERT、UPDATE和DELETE。通过视图的删除数据,要慎用,如果视图看不到的,无法删除。解决办法:给视图加上with check option约束之后,基于视图的更改,凡是不符合视图约束(where)的修改、插入、删除时会报错,用以限制对视图的修改。 (2)、当一个视图是基于多个基表建立的,在视图上修改数据时,只能INSERT或UPDATE基于一个基表的字段的值,无法同时修改两个或以上的基表的字段。DELETE不能运行,因为DELETE语句仅在视图的FROM子句中只包含一个表时才可以引用更新视图。 解决办法:建立INSTEAD OF触发器,把对视图的INSERT、UPDATE、DELETE操作转换为分别对几个基表的INSERT、UPDATE、DELETE操作,分作几步进行。这样对视图的INSERT、UPDATE、DELETE操作就有效了。8、 索引有什么样的优点,也有什么样的缺点,我们在运用索引的时候,是显示运用的吗,那是怎么样应用的呢,请举例说明。答:索引的优点:可以加快我们的查询速度。 索引的缺点:(1)、当我们INSERT、UPDATE、DELETE时 ,数据库系统总是要去 更新每一个索引,因此而浪费很多时间。所以在基于事务的系统中,应尽量少建立索引。(2)、带索引的给在数据库中会占据更多的存储空间。 索引并不显示使用,而是在执行SQL语句时,当中含有WHERE、ORDER BY、GROUP BY、HAVING等了句时,即凡是有对数据进行搜索和排序的语句,查询优化器组件会找出查询效率最高的办法,而查询优化器就会选择最优的索引进行工作。9、 如果一个表其中有三个字段很常用,它们是A,B,C三个字段,其中B字段更常用,那么这时我们应该怎么样创建索引。答:创建一个组合索引,其中包括A、B、C三个字段 ,但一定要把B字段放在最前面。因为B字段最常用,它的唯一性应该是最高的。10、如果一个表有10万条记录,其中有10个它段非常常用,我们应该怎么样他建索引。 答:创建一个组合索引,其中只包括非常常用的10个字段 ,排列的顺序一定是按唯一性的高低进行排列,唯一性最高的字段放在最前面,唯一性最低的放在最后面。11触发器会产生递归调用吗,请举例说明,像这种情况,我们应该怎么样避免呢? 答:触发器会产生递归调用。有两种情况 第一种:直接递归 即触发器被激发并执行一个操作,而该操作又使同一个触发器被激发。 第二种:间接递归 即触发器被激发并执行一个操作,而该操作又使另一个触发器被激发。第二个触发器又使得第一个触发器的原始表得到更新,从而再一次引发第一个触发器。 避免的办法有: (1)、在编写触发器里,人为的注意到这一点。 (2)、防止直接递归:alter database pubs set RECURSIVE_TRIGGERS OFF 防止间接递归:请将 nested triggers 服务器选项设置为 0。 12、如果基于一个基表创建了很多个同种类型的触发器,比如UPDATA触发器,我们跟据什么来确定他们所执行的顺序?不管你创建的触发器是INSERT ,UPDATE ,DELETE类型!其执行顺序都是按照的你SQL语句!你一条SQL语句不会执行三种类型,所以没啥顺序!如,A表创建了触发器有这三种类型 !在你操作A表的删除语句时,A表就只会去寻找Delete要执行的语句!13、(1)在数据查询中,我们需要把两个或者多个表作横方向联接,用什么命令?答:用联接来解决这个问题join.on(2)请问联接有多少种类,分别是哪几种?答:有三种,他们是左联接 left join .on,右联接right join.on, 内联接inner joinon或者joinon。 (3)在联接中,用什么来指定联接的条件?答:用on(4)在联接查询查询中,有没有规定在所查询的两个表的字段中一定要有主鍵字段?答:没有这种说法,不一定必须查询主鍵,正确的说法是:典型的联接是指定一个表的外鍵以及在另一个表上的关联鍵。14(1)在数据查询中,我们需要把两个或者多个表作纵方向联接,用什么命令?答:使用Union联合命令。(2)在使用Union联合命令时,我们应注意些什么?答:所联合的几个查询,字段名可以不相同,但是字段类型、字段数都必须要相同。(3)请说一说Union和UnionAll这两个命令的区别?答:Union命令得到的结果会去掉重复项,作了一个distinct操作。UnionAll命令不会去掉重复项。15、数据库的安全和管理方面的间题没有问。.net工程方面的笔试题1、 DataSet和DataReader的区别和相同点,分别适合用于什么样的情况? 答: DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接。Datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。 处理数据速度DataSet读取、处理速度较慢。DataReader读取、处理速度较快。 更新数据库在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库。在对DataReader中的数据进行更新后,没有办法进行数据库更新。 支持分页排序在DataSet中支持分页、动态排序等操作。在DataReader中没有分页、动态排序的功能。 占用内存DataSet在 IIS 服务器上所使用的内存较多。DataReader在 IIS 服务器上所使用的内存较少。2、 有基类如下:public class parent public parent() Console.Write(“Parent”);请写出一个子类Son,要求子类的构造函数实现如下的功能:(1)输出儿子的NAME、SEX、AGE、以及Parent,(2)要求在Son的构造函数里不能有任何的命令语句出现。 public class parent public parent() Console.Write(“Parent”);public class Son:parent static string name=null; static int sex=0; static int age=0; public parent(string name,int sex,int age):base() name=name; sex=sex; age=age; display();publci void display() Console.WriteLine(“name=”+name); Console.WriteLine(“sex=”+sex); Console.WriteLine(“age=”+age);3、 请例举出三种以上进行页面重定向的方式(包括服务端和客户端)。 答: 第一种: Response.Redirect,第二种: Server.Transfer 第三种: function redirect(url) document.theForm.action = url;document.theForm.submit();第四种: StringBuilder sb=new StringBuilder();sb.Append(parent.framesmain.location=);sb.Append(GetResult.aspx);sb.Append(?minVal=);sb.Append(TextBox1.Text);sb.Append(&maxVal=);sb.Append(TextBox2.Text);sb.Append(;);Response.Write(sb.ToString();4、 写出禁用ViewState的语句。答: Control(具体的某个控件).EnableViewState=false;5、 请谈一谈.NET的code-behind模式和code_clude模式的区别,和各自的优点及缺点。主要是通过aspx页面指向对应的CS文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前的asp页面和代码全混在一起不容易后期的修改和维护,使用code behind更容易维护,美工和程序员可以很好的分工6、 写出下列七个程序段的输出结果:(1)interface InFace void fun(); class MyParent:InFacepublic void fun() Console.WriteLine(Parent);class MySon:MyParentpublic void fun() Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();结果:Parent(2) interface InFace void fun(); class MyParent:InFacepublic new void fun() Console.WriteLine(Parent);class MySon:MyParentpublic void fun() Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:Parent(3)interface InFace void fun(); class MyParent:InFacepublic new void fun() Console.WriteLine(Parent);class MySon:MyParentpublic new void fun() Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:Parent(4)interface InFacevoid fun();class MyParent:InFacepublic void fun()Console.WriteLine(Parent);class MySon:MyParentpublic override void fun()Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:语法错误: 无法重写继承成员“ConsoleApplication6.MyParent.fun()”,因为它未标记为 virtual、abstract 或 override(5)interface InFacevoid fun();abstract class MyParent:InFacepublic virtual void fun()Console.WriteLine(Parent);class MySon:MyParentpublic override void fun()Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:Son(6)interface InFacevoid fun();class MyParent:InFacepublic virtual void fun()Console.WriteLine(Parent);class MySon:MyParentpublic override void fun()Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:Son(7)interface InFacevoid fun();abstract class MyParent:InFacepublic void fun()Console.WriteLine(Parent);class MySon:MyParentpublic override void fun()Console.WriteLine(Son);public class MyTestpublic static void Main(string args) InFace inf=new MySon();inf.fun();Console.Read();结果:语法错误: 无法重写继承成员“ConsoleApplication6.MyParent.fun()”,因为它未标记为 virtual、abstract 或 override8、 在.NET中有自动的垃圾回收机制,但是我们也可以显示声明类的析构函数,请写出下列程序的输出结果:像这个程序一样我们显示声明类的析构函数,会有什么问题出现?析构函数用于析构类的实例。1、不能在结构中定义析构函数。 只能对类使用析构函数。2、一个类只能有一个析构函数。3、无法继承或重载析构函数。4、无法调用析构函数。 它们是被自动调用的。5、析构函数既没有修饰符,也没有参数。class Parentpublic Parent() Console.WriteLine(Parent);Parent() Console.WriteLine(Delete Parent);class Son:Parentpublic Son():base() Console.WriteLine(Son);Son() Console.WriteLine(Delete Son);public class MyTestpublic static void Main(string args) Son son=new Son();结果:Parent Son Delete Son Delete Parent9、 按值传递和按引用传递各有什么特点。它们有什么区别?答:在按值传递中,在被调方法中对变量所做的修改不会影响主调方法中的变量。在按引用传递中,在被调方法中对变量所做的修改会反映到主调方法中的变量。10、 写出下更程序的输出结果:(1)public class MyTestpublic static void Main(string args) int i=10;fun(i);Console.WriteLine(i=+i);Console.Read();public static int fun(int a) a+;Console.WriteLine(a=+a); return a;结果:a=11 i=10(2)public static void Main(string args) int i=10;fun(out i);Console.WriteLine(i=+i);Console.Read();public static int fun(out int a) a+;Console.WriteLine(a=+a); return a;结果:语法错误: 控制离开当前方法之前必须对输出参数“a”赋值使用了未赋值的局部变量“a”(3)public class MyTestpublic static void Main(string args) int i=10;fun(out i);Console.WriteLine(i=+i);Console.Read();public static int fun(out int a) a=12;a+;Console.WriteLine(a=+a); return a;结果:a=13 i=13 (5)public class MyTestpublic static void Main(string args) int i=10;fun(ref i);Console.WriteLine(i=+i);Console.Read();public static int fun(ref int a) a+;Console.WriteLine(a=+a); return a;结果:a=11 i=11ref修饰参数,说明是引用的传递,也就是说在函数中对参数的操作会改变原来的值;out修饰参数,是说这个参数可以不被初始化,但在函数中一定要有赋值的语句。 附关于out参数的相关知识点: 必须被赋值。方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。属性不是变量,不能作为 out 参数传递。如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。例如,以下重载声明是有效的:class MyClass public void MyMethod(int i) i = 10; public void MyMethod(out int i) i = 10;而以下重载声明是无效的:class MyClass public void MyMethod(out int i) i = 10; public void MyMethod(ref int i) i = 10;与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方为其赋值。例如:public static void MyMethod(out int arr) arr = new int10; / definite assignment of arr与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。例如:public static void MyMethod(ref int arr) arr = new int10; / arr initialized to a different array下面的两个示例说明 out 和 ref 在将数组传递给
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国流体过滤压力筛项目投资可行性研究报告
- 2025标准合同终止商业店铺租赁协议范本
- 2025企业与个人借款合同范本简约版
- 马桶下水管行业深度研究报告
- 辣根行业深度研究报告
- 中国非标打印纸项目投资可行性研究报告
- 2025年下半年云南红河州屏边县“苗岭振兴”人才专项第二轮招聘11人易考易错模拟试题(共500题)试卷后附参考答案
- 中国混凝土孔砖项目投资可行性研究报告
- 2025年下半年云南省红河州政府招聘消防员81人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年云南省交通投资建设集团限公司招聘70名易考易错模拟试题(共500题)试卷后附参考答案
- 2025年及未来5年中国数字示波器行业市场深度分析及投资前景展望报告
- 海水鱼缸施工合同范本
- 偏瘫患者下肢康复训练
- 阳光房全套施工方案
- 铭记历史荣光共盼祖国统一!课件-2025-2026学年高二上学期台湾光复纪念日主题班会
- 海港机械设备维护及安全措施
- 2025安徽宿州市公安机关第二批招聘警务辅助人员240人考试参考试题及答案解析
- 血酮体测定方法
- 员工发现隐患奖励制度
- 2025年全国《滴滴网约车》司机从业资格驾驶证考试题(附答案)
- 遗体接运工应急处置技术规程
评论
0/150
提交评论