c#编程基础练习题与答案

上传人:文*** 文档编号:47676461 上传时间:2021-12-25 格式:DOCX 页数:49 大小:62.74KB
收藏 版权申诉 举报 下载
c#编程基础练习题与答案_第1页
第1页 / 共49页
c#编程基础练习题与答案_第2页
第2页 / 共49页
c#编程基础练习题与答案_第3页
第3页 / 共49页
资源描述:

《c#编程基础练习题与答案》由会员分享,可在线阅读,更多相关《c#编程基础练习题与答案(49页珍藏版)》请在装配图网上搜索。

1、1. 面向对象的思想主要包括什么答 : 个人认为一各程序语言要成为真正的面向对象的程序设计语言, 它必须符合下列条件:1 抽象 (abstraction) 抽象能够有效地管理一个问题的复杂性 , 其作法是划分出与该问题相关的一组对象.2 封装 (Encapsulation) 封装是指将一个抽象的内部实现隐藏在特定的对象之内 .3 多态 (polymorphism) 多态会提供相同方法的多种操作方法的多种操作实作. 例如 , 不同的对象都会拥有一个Save 方法 , 但是每一个Save 方法会执行不同的操作 .4 继承 (inheritance) Visual C# 2005 最令人兴奋之处就是

2、其继承特性.v c#2005 则提供了真正的方法继承, 因此您可以重复使用一个类的实例 .2. 什么是中的用户控件自己动手作自己的控件来取代.NET 提供的控件。这种控件就是用户控件。 后缀为 .ascx3. 什么叫应用程序域什么是受管制的代码什么是强类型系统什么是装箱和拆箱什么是重载什么是多态CTS、CLS和CLR分别作何解释应用程序域: 应用程序域(通常是AppDomain )是用于隔离应用程序的虚拟进程。在同一个应用程序作用域中创建的所有对象(换句话说,从该应用程序的入口点开始沿着对象激活序列的任何地方)都在同一个应用程序域中创建。多个应用程序域可以存在于一个操作系统进程中, 使它们成为

3、隔离应用程序的简便方式。 操作系统进程通过使用各不相同的内存地址空间来提供隔离。 尽管它是有效的, 但也是代价昂贵的, 并且不能达到大型Web 服务器所需要的数量。与其相比,公共语言运行时通过管理在应用程序域中运行的代码的内存使用来强制 进行应用程序隔离。这样就确保它不会访问应用程序域以外的内存。需要注意的是,只有类 型安全的代码才能以这种方式管理(当在应用程序域中加载不安全代码时,运行时不能保证 隔离) 。理解应用程序域:应用程序域是.NET 运行库的逻辑进程表示, 操作系统进程可以包含多个应用程序域。 应用程序域具有下列优点:1 、隐藏了进程具体的操作系统信息。从而允许把.NET 放在不同

4、的操作系统下。2 、提供了隔离。即使运行在同一个进程中的属于不同域的应用程序也不能直接共享全局数据、静态数据或其他资源。所以,一个应用程序域失败了,也不会影响到同一个进程中的其他应用程序域。3 、 对于不需要昂贵的 IPC 机制的进程, 应用程序域允许.NET 运行库优化运行在这种进程中的应用程序间的通信。因为应用程序域是被隔离的, 所有 .NET 对象都会被界定在创建它的应用程序域内。 如果跨应用程序域的边界传递对象引用,该被引用对象就被称为远程对象。装箱和拆箱在C#中的有两种类型的变量:值类型和引用类型。当值类型和引用类型相互转化时,会发生装箱和拆箱的过程。这里有一点要声明:经过拆箱或装箱

5、的对象会多出它自己一份拷贝。它和它的拷贝不在一个存储区域。这也是值类型和引用类型的区别所在。值类型总是在栈中,而引用类型总是在托管堆中。(目前也支持了装箱和拆箱,但是我目前不知道是否和C#-样)。为了进一步理解看下面例子:struct Pointpublic int x;public int y;static void Main()Point p;=10;=20;Object o=p; 将值类型从栈中拷贝到堆中。/*/* 从托管堆中将对象拷贝到栈中。/*/Point p2=(Point)p;( “:="+“:=“+;=16;=34;( “:="+“:=“+;( “:=&qu

6、ot;+“:=“+;输出结果为::=10;=20;:=10;=20;:=16;=34;可知,变量经过拆箱/ 装箱后,得到是自己的另一份拷贝。装箱和取消装箱的概念是C#的类型系统的核心。它在“值类型”和“引用类型”之间的架起了一座桥梁,使得任何“值类型”的值都可以转换为object类型的值,反过来转换也可以。装箱和取消装箱使我们能够统一地来考察类型系统,其中任何类型的值最终都可以按对象处 理 多态 一形象理解 两条理解的原则:( 1)一个派生类对象可以被声明成一个基类,或者是一个基类指针可以指向一个派生类对象:MainMain ET结合Java和COMI决方案两者优点来解决互操作性问题。类似于C

7、O加义的标准二进制格式,.NET定义了一个称为通用类型系统CommoiType System(CTS)的类型标准。这个类型系统不但实现了 COMJ变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型 扩展。任何以.NET平台作为目标的语言必须建立它的数据类型与CTS勺类型间的映射。所有.NET语言共享这一类型系统,实现它们之间无缝的互操作。该方案还提供了语言之间的继 承性。例如,用户能够在中派生一个由C颜写的类。很显然,编程语言的区别不仅仅在于类型。例如,一些语言支持多继承性,一些语言支持无符号数据类型,一些语言支持运算符重载。用户应认识到这一点,因此.NET通过定义公共语言规范 (C

8、LS : Common Language Specification) ,限制了由这些不同引发的互操作性问题。CLS定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。认识到这点很重要,这里讨论的特征问题已不仅仅是 语言间的简单语法区别。例如,CL流不去关心一种语言用什么关键字实现继承,只是关心该语言如何支持继承。CL%CTS勺一个子集。这就意味着一种语言特征可能符合CT砺准,但又超出CLS勺范畴。例如:C#t持无符号数字类型,该特征能通过CTS勺测试,但CLS仅仅识别符号数字类型。因此,如果用户在一个组件中使用C刷无符号类型,

9、就可能不能与不使用无符号类型的语言(如设计的.NET组件实现互操作。这里用的是“可能不”,而不是“不可能”,因为这一问题实际依赖于对non-CLS-compliant项的可见性。事实上,CLSW则只适用于或部分适用于那些与其他组件存在联系的组件中的类型。实际上,用户能够安全实现含私有组件的项目,而该组件使用了用户所选择使用的.NET语言的全部功能,且无需遵守CLS勺规范。另一方面,如果用户需要.NET语言的互操作性,那么用户的组件中的公共项必须完全符合CL领范。让我们来看下面的C#弋码:public class Foo private uint A = 4;public uint B = 5;

10、public long GetA()return A;最后一个 C!公共语言运行库 Common Language Runtime(CLR)。简单地说,CLRR1CTS勺实现,也就是说,CLR!应用程序的执行引擎和功能齐全的类库,该类库严格按照CTSIS范实现。作为程序执行引擎,CL刖责安全地载入和运行用户程序代码,包括对不用对象的垃圾回收和安全检查。在CL幽控之下运行的代码,称为托管代码(managed code)。作为类库,CLFRI供上百个可用的有用类型, 而这些类型可通过继承进行扩展。 对于文件 I/O 、 创建对话框、 启动线程等类型基本上能使用 Windows API 来完成的操作

11、,都可由其完成。让我们正确看待“ 3C'。开发人员在构建自己的分布式应用程序时,因为用户在编程时将直接面对CLR应将主要精力放在学习了解CLRt,而不是CT序口CLG而对于希望以.NET平台为目标的语言和工具开发商来说,就需要深入理解CT序口CLS互操作性组件是分布式应用的关键,因此理解.NET如何通过定义公共类型实现这一目标,也就显得十分重要。4 .列举一下你所了解的XML技术及其应用5 .值类型和引用类型的区别写出C#勺样例代码 Ref与Out的区别。Ref 与 Out 的区别是相同点:1. 使参数按引用传递,注意这里的“引用”与我们通常说的“对象引用”不一样,可以形象的理解为,类

12、似于 OC+中传指针(地址)。2. 效果是,被调用方对该参数的修改会反映到该变量中,即当调用结束返回时,调用方看到的是修改过的值。3. 方法定义和调用方法都必须显式使用 ref 或者 out 关键字不同点:1。传递到ref的参数必须最先初始化,即由调用方显式初始化。2。传递到out 的参数在传递之前不需要显式初始化,但需要调用方在方法返回之前必须对其赋值。使用场景:关于重载说明:1。 ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。2。 但是,如果一个方法采用 ref 或 o

13、ut 参数,而另一个方法不采用这两类参数, 则可以进行重载。使用ref前必须对变量赋值, out不用。out 的函数会清空变量, 即使变量已经赋值也不行, 退出函数时所有out 引用的变量都要赋值, ref引用的可以修改,也可以不修改。区别可以参看下面的代码:using System;class TestAppstatic void outTest(out int x, out int y)Main 何理解委托单从委托的概念上来讲, 很简单 , 就是对方法的引用 , 包括静态方法和对象实例的方法, 有点类似C语言中的方法指针,不过方法指针只能引用静态方法!而且委托是类安全的! 一句话来概括:委

14、托就是方法的入口 !调用委托就是调用方法, 可能有人会说既然调用委托就是调用方法, 那为什么不直接调用方法了 , 干吗非得通过委托来调用 ! 一开始我也是这么想, 包括现在也还有这个疑惑, 个人觉得 , 如果撇开事件来说, 委托除了匿名方法名称之外, 没有具体实质型的好处! 意思就是说我们如果不是在事件里用委托, 和直接调用方法是没有本质区别的至于委托的声明格式, 其基本语法为 : 修饰符 delegate 返回类型 代理名称( 参数列表)比如说 public delegate void MyDelegate (int i);实例化的时候给它赋值一个方法( 实例或静态方法) 名就可以了 MyD

15、elegate MD=newMyDelegate( 类中的方法名 )委托还可以实现多重委托,可以用Combine方法讲不同代理组在一起,也可以用Removed法从多重代理中除去一个代理, 不过在我们实际使用可以不需要这么麻烦, 用 +,- 可以达到这个目的!比如说 :MyDelegate MD=new MyDelegate( 方法 1);MyDelegate MD2=new MyDelegate( 方法 2);MyDelegate MD3=MD+MD2;也可以这么写MyDelegate MD3+=new MyDelegate( 方法 1);MyDelegate MD3+=new MyDeleg

16、ate( 方法 2);执行代理MD就是调用方法1和方法2;多重代理个人觉得在事件委托中用处很大, 因为在实际对象中 , 一个方法执行会触发多个方法相继执行 , 这个时候会需要多重代理这个概念! 使用多重代理的时候要注意方法返回类型必须是 void 类型的!PS:在代理类中有2个属性,一个是Method,表示所应用方法的名称!另一个是Target,表示实例方法所在对象的类型, 如果是静态方法, 则返回 NULL事件 (Event)正如我上面说的那样, 如果撇开事件, 委托好像没有多大用途 , 但也只是假设, 委托就是为事件服务的,两者是分不开的.言事件比言委托!在C#中,事件和属性,方法一样,是

17、类的一种成员,通过事件的使用 , 可以在类的对象发生某种变化 , 通过事件 , 来触发某些方法来处理事件的发生!举个通俗的例子, 在的窗体生成种 , 拖进来一个按钮, 双击它 , 页面后台会自动生成按钮事件的方法名称 , 编程人员只要在该方法体内写上具体方法即可! 那么按钮类里面是怎么实现的了?具体是这样的 , 在按钮类里面声明了一个事件委托:public envet EventHandler Click;并写了一个触发该事件的方法:protected virtual void OnClick(EventArges e)if(Click!=Null)Click(this,e)而什么时候调用上面

18、这个方法,根据程序结构类型不同而异,在WEBZ用程序中,是通过回传事件接口来调用上面这个方法, 在按钮类里只是实现了事件委托, 具体双击按钮触发的实际方法是在页面程序里编写的!( PS:所以这也是我认为使用事件委托的最大好处,机动行好,灵活,如果不用委托, 而是直接调用方法, 那么所调用的方法就固定死了 , 不利于实际面向对象编程中出现的未预型方法, 不灵活了 )在页面程序为按钮绑定事件委托所引用的方法是开发环境自动帮我们完成的 , 但我们要清楚实现的必要步骤 :在页面程序里必须给按钮的事件实例化方法, 在的页面代码中的 private voidInitializeComponent() 里要

19、写上 :+= new ; 明事件委托;2. 触发事件的方法;3. 实例化事件委托( 给委托添加引用方法)msdn2005中是这样解释的:委托具有以下特点:委托类似于C+ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。委托适用于那种在某些其他语言中需用函数指针来解决的情况 (场合) 。 但是, 与函数指针不同,委托是面向对象和类型安全的。类派生的类。委托实例封

20、装了一个调用列表,该列表列出委托声明定义一个类,它是从了一个或多个方法,每个方法称为一个可调用实体。对于实例方法,可调用实体由一个实例和该 实例的方法组成。对于静态方法,可调用实体仅由一个方法组成。如果用一组合适的参数来调用一个委托实例,则该委托实例所封装的每个可调用实体都会被调用,并且用的都是上述的同一组参数。委托实例的一个有趣且有用的属性是:它既不知道也不关心有关它所封装的方法所属的类的种种详情;对它来说最重要的是这些方法与该委托的类型兼容(第节)。这使委托非常适合“匿名”调用。这是一个强大的功能。定义和使用委托分三个步骤:声明、实例化和调用。#中的接口和类有什么异同。一个接口定义一个协定

21、。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中 OCP

22、(开放封闭原则),我们使用接口,而不需要关心他的具体实现,具体实现的细节变化也无关客户端(使用接口的类)的使用,对与扩展是开放的,我们可以另写一个接口的实现来扩展当前程序, 而不影响上层的使用, 但对修改是封闭的, 即我们不能够再去修改接口的定义, 当然这个“不能够”是指在规范原则上不应该这么做!9. 。 net 中读写数据库需要用到哪些类他们的作用连接和TCP连接的异同。的身份验证方式有哪些分别是什么原理12 . 进程和线程分别怎么理解简单的说,你每启动一个程序,就启动了一个进程。在Windows 下,进程是最小运行单位。在 Windows 95/NT 下,每个进程还可以启动几个线程,比如每

23、下载一个文件可以单独开一个线程。在 Windows 95/NT下,线程是最小单位。WINDOWS多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。 线程与进程的区别多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。用过UNIX 操作系统的读者知道进程,在UNIX 操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配,但进程和线程有什么区别呢进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:线程

24、的划分尺度小于进程,使得多线程程序的并发性搞。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别 的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口13 . 什么是 code-Behind 技术。14 . 活动目录的作用。15 .中读写XML的类都归属于哪些命名空间16 .解释一下UDD太WSDL勺意义及其作用。17 .什么是SOAP有哪些应用。答 :SOAP( Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基

25、于XML的协议。使用SOAP不用考虑任何特定的传输协议(最常用的还是 HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML 格式的消息, 具体请看 如何部署一个页面。19. 如何理解中的垃圾回收机制。20. 常用的调用 webservice 方法有哪些与 abstraction 区别22. 结构与类有何差异哪些时候比较适合使用结构和类 它们的相同之处1, 两者都是 Container 类型 , 这表示它们可以包含其他数据类型作为成员 .2, 两者都拥有成员 , 这些成员包括 : 构造函数 , 方法 , 属性 , 字段 , 常量 , 枚举

26、类型 , 事件 , 以及事 件处理函数.3, 两者的成员都有其各自的存取范围 . 例如 , 您可以将某一个成员声明为 Public, 而将另外一人成员声明为 Private4, 两者都可以实现接口 .5, 两者都可以公开一个默认属性 , 然而前提是这个属性至少要取得一个自变量.6, 两者都可以声明和触发事件, 而且两者都可以声明委托(Delegate).7, 结构与类都可以完全是空的.它们的不同之处如下 :1, 结构是实值类型(Value Types), 而类是引用类型(Reference Types).2, 结构使用载存储(Stack Allocation), 而类使用堆存储 (Heap A

27、llocation).3, 所有结构成员默认都是Public, 而类的变量与常量数则默认为 (Private, 不过其他类成员默认都是 Public.4, 结构成员国不能被声明为 Protected, 但是类成员可以这样做.5, 结构变量声明不能指定初始值, 使用new 关键字词或对数组进行初始化, 但类变量声明则可6, 结构不能声明默认的构造函数, 也就是不拥有参数的非共享构造函数, 但是类则无此限制7, 二者都可以拥有共享构造函数, 结构的共享构造函数不能带有参数, 但类的共享构造函数则可以带或者不带参数8, 结构不允许声明析构函数(Destructor), 类则无此限制 .9, 结构的实

28、例 (Instance) 声明 , 不允许对包含的变量进行初始化设定 , 类则可以在声明类的实例时 , 同时进行变量初始化10, 结构是隐式继承自 ValueType 类而且不能继承任何其它的类型, 类则可以继承来自ValueType 以外的任何类 .11, 结构是无法被继承的 , 类则可以被继承.12, 结 构 永 远 不 会 终 止 , 因 此 CommonLanguage Runtime(CLR) 不 会 在 任 何 结 构 上 调 用 Finalize 方法 . 类则是由内存回收进程加以终止, 当内存回收进程检测到没有任何作用的类时 , 它就会调用类的 Finalize 方法 .13,

29、 结构不需要构造函数 , 类则需要构造函数.14, 结构只能在一种情况下使用非共享构造函数 , 那就是非共享构造函数会接收参数: 但是类则无此限制 , 它可以使用带参数或不带参数的非共享构造函数.15, 每一个结构都具有无参数的隐含公共构造函数 . 此构造函数会将结构的所有成员初始化为基默认值 . 您不能重新定义这个行为 .除了上述的相似处与相异点之外, 我们还可以在”实例与变量”层面上来探讨结构与类. 由于结构是数值类型的 , 因此每个结构变量会永久地绑定到结构实例上. 然而类是引用类型的 ,而且对象变量可引用不同的类实例 . 在此方面的区别 , 会对于使用结构与类造成下列影响:1, 结构变

30、量会隐式地使用结构的无参数构造函数来初始化成员 , 这就意味着, 语句 Structl S就等于 Structl S=new Structl();2, 当您好将一个结构变量赋值给另一个, 或是将结构实例传递到程序变量时, 所有变量成员的值会复制到新的结构中 . 当您将一个对象变量赋值给另一个, 或是将对象变量传递到程序时则只会复制指针.3, 您可以将 Null 值赋值给结构变量, 但是该实例会一直与该变量保持关联 . 虽然变量成员会, 但是您还是可以调用变量的方法并访问其数据成员. 相反地 , 如果您将对象变量设定为 Null, 您就会中断它与任何类实例的关联, 而且除非您再将另外一个实例赋值

31、给它 , 否则无法通过变量访问任何成员 .4, 您可以在不同时间将不同的类的实例赋值给同一个对象变量, 而且在同一时间可以有好几个对象变量引用相同的类实例 , 如果您对类成员值做了改变, 则其它指向相同实例的对象变量也会发生改变. 然而 , 结构成员则会封装在它们自己的实例中 , 变更结构成员值并不会对其它任何结构变量的成员造成影响, 甚至也不会影响相同 Struct 声明的其它实例.5, 两个结构必须以成员对成员的比较方式来执行相等比较. 两个对象变量可以使用 Equals 方法来加以比较.Equals 会判断两个变量是否指向相同的实例 .在下列状况中 , 比较适合使用结构1, 您拥有少量数

32、据而且希望使用会传递的方式来为变量赋值时.2, 您会在每一个实例上执行大量的操作 , 而且若使用堆来管理会造成性能下降.3, 您不需要进行继承, 而且不需要实例有特殊性.4, 您不会采用 Boxing 与 Unboxing 结构 .5,您会在 Managed与UnManage相序代码之间传递Blittable数据.在下列情况中 , 比较适合使用类 :1, 您需要使用继承与多态.2, 您需要在创建阶段初始化一个或多个成员 .3, 您需要提供一个非参数型的构造函数.4, 您需要没有任何限制的事件处理支持.23. 谈谈你对二维树的理解24. 如何把一个array 复制到 arrayList 里for

33、each( object o in array )(o);可以连接什么数据源dataset,datatable,dataviewdataset,datatable,dataview , IList26. 概述反射和序列化反射 : 程序集包含模块, 而模块包含类型, 类型又包含成员。 反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化 : 序列化是将对象转换为容易传输的格式的过程。 例如, 可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传

34、输该对象。在另一端,反序列化将从该流重新构造对象。27. 概述 o/r mapping 的原理利用反射,配置将类于数据库表映射28. 类成员有 ( ) 种可访问形式可访问形式不懂。可访问性: public ,protected ,private,internal29. 用sealed修饰的类有什么特点如果一个密封类被指定为其sealed 修饰符用于防止从所修饰的类派生出其它类。他类的基类,则会发生编译时错误。密封类不能同时为抽象类。sealed 修饰符主要用于防止非有意的派生, 但是它还能促使某些运行时优化。 具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以

35、转换为非虚拟调用来处理。# 中, string str = null 与 string str ="" ,请尽量用文字说明区别。 ( 要点:说明详细的内存空间分配)31. 概述三层结构体系如何实现MVCI式,举例说明!33. 。 net 中读写数据库需要用到哪些类他们的作用的身份验证方式有哪些分别是什么原理35. Remoting 与 webservices 区别3 6 .C#可否对内存进行直接的操作37:您在什么情况下会用到虚方法它与接口有什么不同38: Override 与重载有什么区别39:值类型与引用类型有什么区别40:怎样理解静态变量41:向服务器发送请求有几种方

36、式42: DataReader 与 DataSet 有什么区别Cookie 、43:如果在一个B/S 结构的系统中需要传递变量值,但是又不能使用 Session 、Application ,您有几种方法进行处理使用这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:1 ,在页面里添加必要的控件2 ,创建返回值的 G

37、et 属性过程3,创建可以返回表单的按钮和链接按钮4,在按钮单击事件处理程序中调用方法转移到指定的页面5,在第二个页面中,我们就可以使用属性来获得前一个页面实例对象的引用, 通过它, 就可以使用存取前一个页面的控件的值了以下代码综合实现上述步骤过程的代码:源页面代码:把以下的代码添加到页面中public string Namegetreturn ;public string EMailgetreturn ;然后调用方法private void Button1_Click (object sender, e)(""目标页面代码:private void Page_Load(o

38、bject sender, e)oString();or "sum".ToString();"sum"方法3:全局变量发送页:Application"sum"=(""接收页:"sum"Application 实质上是整个虚拟目录中所有文件的集合, 如果想在整个应用范围内使用某个变量值, Application 对象将是最佳的选择在这里用 Session"" 的方法雷同方法 4:发送页:1. 定义静态变量: public static string str="&quo

39、t;2. str= ("" 接收页:1. 引入第一页的命名空间: using WebApplication1;244:软件开发过程一般有几个阶段每个阶段的作用并说45:微软推出了一系列的Application Block ,请举出您所知道的 Application Block明其作用46:请列举一些您用到过的设计模式以及在什么情况下使用该模式47:您对WebService 的体会以下几道题目如果您不会,请较为详细的描述您的解决思路和方法48:通过超链接怎样传递中文参数49:请编程遍历页面上所有TextBox 控件并给它赋值为50:请编程实现一个冒泡排序算法51. 下面这段代

40、码输出什么为什么int i=5;int j=5;if (i,j)("Equal");else("Not Equal");52. 对于这样的一个枚举类型:enum Color:byteRed,Green,Blue,Orangestring ss=(typeof(Color);byte bb=(typeof(Color);试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。53. 一个长度为 10000 的字符串, 通过随机从 a-z 中抽取 10000 个字符组成。 请用c 语言编写主要程序来实现。54. 在c#中using和new这两个关键

41、字有什么意义,请写出你所知道的意义using指令 和语句 new 创建实例 new 隐藏基类中方法55下面这段代码有错误么switch (i)case():CaseZero();break;case 1:CaseOne();break;case 2:dufault;面的代码中有什么错误吗using System;class Apublic virtual void F()(""); abstract class B:Apublic abstract override void F();整数 a赋值给一个 object 对象时,整数 a将会被 _ 装箱 ( 封装)_3. 类成

42、员有 种可访问形式this.;new Class().Method;static const int A=1; 这段代码有错误么是什么 const 不能用 static 修饰 f=-123.567F; int i=(int)f; i 的值现在是1236. 利用operator 声明且仅声明了“ =”,有什么错误么7. 委托声明的关键字是delagete8. 用 sealed 修饰的类有什么特点密封,不能继承 9. 在中所有的自定义用户控件都必须继承自 Control10. 在 .Net 中所有可序列化的类都被标记为 11. 在 .Net 托管代码中我们不用担心内存漏洞,这是因为有了 gc1.

43、有哪几种方法可以实现一个类存取另外一个类的成员函数及属性, 并请举列来加以说明和分析 .2. 如果需记录类的实例个数, 该如何实现, 请写一个简单的类于以证明 .类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.4. 需要实现对一个字符串的处理, 首先将该字符串首尾的空格去掉, 如果字符串中间还有连续空格 的话 , 仅保留一个空格 , 即允许字符串中间有多个空格 , 但连续的空格数不可超过一个2、的错误处理机制是什么数据库方面:1. 存储过程和函数的区别2. 事务是什么3. 游标的作用如何知道游标已经到了最后4. 触发器分为事前触发和事后

44、触发,这两种触发有和区别。语句级触发和行级触发有何区别。1。用C#实现以下功能a 产生一个 int 数组,长度为100,并向其中随机插入 1-100 ,并且不能重复。int intArr=new int100;ArrayList myList=new ArrayList();Random rnd=new Random();while<100) int num=(1,101);if(!(num) (num);for(int i=0;i<100;i+)intArri=(int)myListi;b 对上面生成的数组排序,需要支持升序、降序两种顺序2。请说明在中常用的几种页面间传递参数的方

45、法,并说出他们的优缺点。session(viewstate) 简单,但易丢失application 全局cookie 简单,但可能不支持,可能被伪造input ttype="hidden" 简单,可能被伪造url 参数 简单,显示于地址栏,长度有限数据库 稳定,安全,但性能相对弱3。请说明中的错误处理机制,并举例try catch final4。请说出强名的含义具有自己的key,可以在GAC企局程序集缓存)为公用5。请列出c#中几种循环的方法,并指出他们的不同for wile foreach6。请指出中所有类型的基类 object7。请指出GAC勺含义8。SQL SREVE

46、R,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值试卷1. 填空 : (1) 面向对象的语言具有 性、 性、 性。(2) 能用 foreach 遍历访问的对象需要实现 接口或声明 方法的类型。(3) 列举中的五个主要对象 、 、 、 、 。 Connection,Command,DataReader,DataAdapter,DataSetconnection 连接对象command命令对象,指示要执行的命令和存储过程!datareader 是一个向前的只读的数据流。dataadapter 是功能强大的适陪器,支持增删改查的功能dataset 是一个数据级对象,相当与内存中的一张表或多

47、张表!2. 不定项选择:(1) 以下叙述正确的是:A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。(2) 从数据库读取记录,你可能用到的方法有:A. ExecuteNonQuery B. ExecuteScalarC. FillD. ExecuteReader3. 简述 private 、 protected 、 public 、 internal 修饰符的访问权限。4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键, 注 意:ID可能不是连续的。)5. . 列举 页面之间

48、传递值的几种方式。6. 写出程序的输出结果class Class1 private string str = ""private int i = 0;static void StringConvert(string str) str = "string being converted."static void StringConvert(Class1 c) = "string being converted."static void Add(int i) i+;static void AddWithRef(ref int i) i+;

49、static void Main() int i1 = 10;int i2 = 20;string str = "str"Class1 c = new Class1();Add(i1);AddWithRef(ref i2);Add;StringConvert(str);StringConvert(c);(i1);(i2);(str);7. 写出程序的输出结果public abstract class Apublic A()('A');public virtual void Fun()("()");public class B: Apubl

50、ic B()('B');public new void Fun()("()");public static void Main()A a = new B();();8.写出程序的输出结果:public class A public virtual void Fun1(int i)(i);public void Fun2(A a)(1);Fun1(5);public class B : Apublic override void Fun1(int i)(i + 1);public static void Main()B b = new B();A a = ne

51、w A();(b);(a);9. 一列数的规则如下: 1 、 1 、 2、 3、 5、 8、 13、 21、 34求第30位数是多少,用递归算法实现。(C# 语言)10. 程序设计 : 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 (C# 语言 )要求: 1. 要有联动性,老鼠和主人的行为是被动的。2. 考虑可扩展性,猫的叫声可能引起其他联动效应。参考答案:1. (1)继承性、封装性、多态性。(考基本概念)(2) Enumerable、GetEnumerator (又tforeach机制的理解,本来不想出这题的,(3) . ( 送分题 , 对的了解 )评分标准:一空1分,满分10分。2. (

52、1) B 、 C ( 考对接口的理解 ) (2) B 、 C、 D ( 考查对的熟练程度)评分标准 : 一题5分,不选或者错选均不得分。漏选得2分。满分10分。3. . private :私有成员 ,在类的内部才可以访问。protected :保护成员,该类内部和继承类中可以访问。public :公共成员,完全公开,没有访问限制。internal:在同一命名空间内可以访问。评分标准:答对1题 2分, 2题 5分,3题 7分。全对10分。( 送分题 )4. 解 1: select top 10 * from A where id not in (select top 30 id from A)解

53、 2: select top 10 * from A where id > (select max(id) from (select top 30 id fromA )as A)评分标准: 写对即10分。( 答案不唯一, datagrid 分页可能需要用到 )5. 1. 使用 QueryString, 如 id=1; response. Redirect()2. 使用 Session 变量3. 使用 等等评分标准: 答对 1点得3分,两点7分,3 点10分。6. ( 考查值引用和对象引用 )10210strstring being converted.评分标准:答对一点得2分,满分10分

54、。7. AB()评分标准: 写出 得 5分,写出() 得 5分,满分10分。( 考查在继承类中构造函数 , 以及 new 方法 , )8. 2516评分标准: 答对一点得2分,两点得5分,3点得 7分。全对得10分。(一些人做这题,头都晕了 '_)9.public class MainClasspublic static void Main()(Foo(30);public static int Foo(int i)if (i <= 0)return 0;else if(i > 0 && i <= 2)return 1;else return Foo(

55、i -1) + Foo(i - 2);评分标准: 写出 return Foo(i -1) + Foo(i - 2);得 5分。写出 if(i > 0 && i <= 2) return 1;得5分。方法参数过多需要扣分(扣除分数= 参数个数 1 )不用递归算法扣5分( 递归算法在树结构建立等方面比较常用 )10要点: 1. 联动效果,运行代码只要执行() 方法。 2. 对老鼠和主人进行抽象评分标准 : <1>. 构造出 Cat、 Mouse、 Master 三个类,并能使程序运行(2分 )<2>从Moused口 Master中提取抽象(5分)

56、<3> 联动效应,只要执行() 就可以使老鼠逃跑,主人惊醒。 (3 分 )public interface Observervoid Response(); Mainpublic delegate void SubEventHandler();public abstract class Subjectpublic event SubEventHandler SubEvent;protected void FireAway()if != null)();public class Cat : Subjectpublic void Cry()("cat cryed."

57、);();public abstract class Observerpublic Observer(Subject sub)+= new SubEventHandler(Response);public abstract void Response();public class Mouse : Observerprivate string name;public Mouse(string name, Subject sub) : base(sub)= name;public override void Response()(name + " attempt to escape!&q

58、uot;);public class Master : Observerpublic Master(Subject sub) : base(sub)public override void Response()("host waken");class Class1static void Main(string args)Cat cat = new Cat();Mouse mouse1 = new Mouse("mouse1", cat);Mouse mouse2 = new Mouse("mouse2", cat);Master ma

59、ster = new Master(cat);();. C# 中 property 与 attribute 的区别,他们各有什么用处,这种机制的好处在哪里一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质2. 讲一讲你理解的 web service, 在dot net framework 中,怎么很好的结合 xml (讲概念就行了)3. C#, Java和C+的特点,有什么相同的地方,不同的地方,C#分别从C+和java中吸取了他们那些优点相同点:都是 CH的,都是面向对象不同点:Java,C#都是建立在虚拟机机制上,而 C+坏是4. C# 可否对内存进行直接的操作(这可是

60、个难点哦要注意! )可以5. 用 Visual C+ 编写的代码(unmanaged code),如何在 CLRT和其他 dot net component 结合6. 以前作过的一些项目介绍一下自己的编程经验。 ( 这是蒙混不过去的,基本一问就知道是真是假)7. 你对公司有什么期望你的薪水期望值为什么学计算机以前的工作经验(这非常重要)Q3:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑为什么触发器,性能好,事务性Q4: ADO NE*目对于AD等主要有什么改进新增 dataset 等,不需要随时保持连接,性能提高Q5: ASR NEW ASP®比,主要有哪些进步asp解释形,aspx编译型,性能提高,有利于保护源码Q6: C#中的委托是什么事件是不是一种委托委托是一种安全的函数指针,事件是一种消息机制、 也是委托Q7:描述一下C#中索引器的实现过程,是否只能根据数字进行索引Q8: C#中要使一个类支持 FOREACH历,实现过程怎样右键点击时显示“禁止右Q10:写一个HTM页面,实现以下功能,左键点击页面时显示“您好”,键”。并在2分钟后自动关闭页面。Q11:你对XMLHTTP WEBSERVICET解吗简单描

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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