理论部分

1、解释.net.netFrameWorkC#Vs2005ADO.NET

回答:.net:支持跨语言的开发平台

.netframework:.net下一个重要的组件,是开发环境

C#:是一种语言

VS:开发工具

ADO.Net:是操作数据库的一种技术.

 

2、为什么.NET程序第二次运行比第一次的效率高?

     回答:因为第一次需要编译两次,第一次是通过C#编译器编译成微软中间语言(MSIL),它是独立于CPU,不能被机器识别,第二次编译是通过即时编译器,编译成二进制文件。第二次运行时,用哪编译那。

 

3、解释CLRCTSCLS?(或者是简述NET框架体系的结构组成)

回答:.net框架运行于操作系统之上,它包含两个重要组件:CLR(公共语言运行时)和FCL.Net Frawork 类库)

CLR分为:

CTS: 通用类型系统, 用于解决不同类型的转化

CLS: 公共语言规范,用于制定以.net平台为目标的最少特征的语言规范

 

4、什么是多态?多态分几种?并分别解释

     回答:多态就是多种形态. 也就是说多个对象在调用同一个方法时会有不同的结果。

多态分两种一种是重载,一种是重写

重载:在一个类中定义多个方法,方法名一样,但是参数类型或参数个数不一样,在方法调用的时候总能找到正确的方法,但是返回值类型不同不能构成重载的条件。

重写.:当子类继承父类时,子类把父类的一些属性和方法继承过来,一些方法不适合自己用的,就重写。如果父类中的方法在子类中被重写,调用的是被重写的方法。父类方法不能随便被重写,只有父类的方法使用 virtualoverrideabstract修饰才能重写,并且子类在重写的时候要使用Override关键字。

 

5、什么是构造方法,构造方法有什么特征

     回答:构造方法:1.名字与类名相同

2.没有返回值,不是void,而是什么都没有

3.只能用new关键字调用

4.实例化一个对象时会自动去调用相应的方法。

5、构造方法不能被继承

注意:对于父类有参的构造方法,只能手动调用,用base关键字,如果一个类没有构造方法,系统会提供一个默认的。

 

6、什么叫装箱、什么叫拆箱

回答:装箱:把值类型转换成引用类型,拆箱:把引用类型转换成值类型。

 

7、什么是值类型、什么是引用类型,他们有哪些区别?

回答:值类型包括:

基本数据类型(intlongfloatcharbool

枚举(enum)

结构(struct)

         引用类型包括:system.Objectstringclass,接口(interface),数组

 

值类型:每一个值类型对象都有一个独立的内存区域保存这个对象,若对象的值改变就会在内存中保存这个值,也就是再开辟块空间。

引用类型:两个不同的对象引用同一个值,它们会指向同一个物理地址。

 

值类型传的是值,引用类型传的是引用,它们在内存当中的存储方式不同。

 

8C#中常量用哪个关键字定义、使用时候注意什么?

     回答:C#中常量用const修饰

使用时注意:1.在使用时不会发生改变(不能重新赋值)

2.在程序中反复使用

 

9、用一个例子说明枚举,值类是引用型?

枚举使用关键字enum定义  用它来定义一组有限的值,如性别

     回答:public enum Genders   //定义枚举

{

Male,Female

}

值类

 

10、什么是继承?使用继承需要注意哪些事项

     回答:继承就是子类继承父类的属性和方法,拿过来变成自己的。

注意:

1.构造方法和私有的不能被继承,但是可以调用父类的构造方法。

对于有参的构造方法需使用base关键字调用

         2.继承有传递性。

         3.C#中继承有单根性,一个类不能同时继承多个父类。

         4.实例化一个子类的时候,会自动去调用父类的构造方法

 

11、什么叫密封类

       回答:被sealed关键字修饰的类称为密封类,密封类不能被继承

 

12、什么是抽象类,什么是接口?他们有什么区别?使用抽象类需要注意哪些事项

回答:

抽象类:对具体对象的最高抽象,这个对象拥有自己的最基本特征,它只有方法的定义没有方法的具体实现,用abstract修饰

接口:接口是某类行为或功能的抽象,是一种规范或者标准,用interface修饰         

 相同点:

1、都不能实例化

     2、都包含未实现的方法

     3、子类必须实现未实现的方法

     不同点:

1、抽象类用abstract定义,接口用interface定义

2、抽象类只能继承一个类,而接口可以实现多个继承一个类,但类必须在最前面

3、非抽象派生类必须实现抽象方法,实现接口的类必须实现所有成员,

如果是继承一个接口可以不用实现接口中的方法

4、需要override实现抽象方法,接口是直接实现

5、抽象类中可以没有抽象方法 但抽象方法中必须包含抽象类,

 

13C#中有哪些访问修饰符?他们的作用范围是什么?

     回答:

1private:私有的 只有自己可以访问(在哪定义,在哪用,其类中无法访问)

     2public:共有的,谁都可以访问,即只要你有权利访问定义的类,都可以访问

     3internal;只有在同一个程序集下才可以访问

      4protected:自己可以访问,子类可以访问

 

14字段默认的是什么修饰符号?类默认的是什么修饰符号?

     回答:字段默认是private,类默认是internal

 

15、谈谈你对面向对象思想的理解

     回答:万物皆对象

面向对象思想有三大特性,具体为,

1,封装:保证对象自身数据的完整性和安全性。

2,继承:建立类之间的关系,实现代码复用,方便系统的扩展。

3、多态:相同的方法调用可实现不同的实现方式。

有利于代码重用

 

16、结构和类有什么区别?

回答:

相同点:

1、都可以包含字段,方法

2、都可以实现接口

不同点:

1、结构是值类型(不改变),类是引用类型(改变)

2、结构(值)存放在栈(堆栈)中,类(引用)存放在堆中

3、结构不能被继承,而类可以被继承

4、结构不能包含显示的无参数的构造方法,类可以

5、类使用时必须用new关键字,而结构可以使用也可以不使用new关键字

6、结构中不能给字段赋值,而类中可以

   7、在结构的构造方法中必须给所以的字段赋值,既有几个参数就赋几个值类不需要        

  结构-->值类型-->传值且不改变-->指向两块空间

  -->引用类型-->传引用改变-->指向同一块空间

 

17、列ASP.NET面之间传递值的几方式?各有何缺点

回答:

1、         Application

2、         使用QueryString,Request

3、         使用Session

4、         使用Server.Transsfer,在第二个页面上通PreviousPage.FindControl()到第一个页面找控件

5、         在第一个页面上把按postbackUrl置成第二个页面,即把第一个页面的据提交到第二个页面去理,然后在第二个页面上通PreviousPage.FindControl()到第一个页面找控件

 

ASP.NET 页面之间传递值的几种方式

 

1. 使用QueryString变量 

 

    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子: 

 

a.aspxC#代码 

 

private void Button1_Click(object sender, System.EventArgs e) 

 

{ 

 

 string s_url; 

 

 s_url = "b.aspx?name=" + Label1.Text; 

 

 Response.Redirect(s_url); 

 

} 

 

 

 

b.aspxC#代码 

 

private void Page_Load(object sender, EventArgs e) 

 

{ 

 

 Label2.Text = Request.QueryString["name"]; 

 

} 

 

 

 

  2. 使用Application 对象变量 

 

    Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用LockUnLock 

 

a.aspxC#代码 

 

private void Button1_Click(object sender, System.EventArgs e) 

 

{ 

 

 Application["name"] = Label1.Text; 

 

 Server.Transfer("b.aspx"); 

 

} 

 

 

 

b.aspxC#代码 

 

private void Page_Load(object sender, EventArgs e) 

 

{ 

 

 string name; 

 

 Application.Lock(); 

 

 name = Application["name"].ToString(); 

 

 Application.UnLock(); 

 

} 

 

 

 

  3. 使用Session变量 

 

    想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。 

 

a.aspxC#代码 

 

private void Button1_Click(object sender, System.EventArgs e) 

 

{ 

 

 Session["name"] = Label.Text; 

 

} 

 

 

 

b.aspxC#代码 

 

private void Page_Load(object sender, EventArgs e) 

 

{ 

 

 string name; 

 

 name = Session["name"].ToString(); 

 

} 

 

 

 

  4. 使用Cookie对象变量 

 

    这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。 

 

 

 

a.aspxC#代码 

 

private void Button1_Click(object sender, System.EventArgs e) 

 

{ 

 

 HttpCookie cookie_name = new HttpCookie("name"); 

 

 cookie_name.Value = Label1.Text; 

 

 Reponse.AppendCookie(cookie_name); 

 

 Server.Transfer("b.aspx"); 

 

} 

 

 

 

b.aspxC#代码 

 

private void Page_Load(object sender, EventArgs e) 

 

{ 

 

 string name; 

 

 name = Request.Cookie["name"].Value.ToString(); 

 

} 

 

 

 

  5. 使用Server.Transfer方法 

 

    这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。 

 

a.aspxC#代码 

 

public string Name 

 

{ 

 

 get{ return Label1.Text;} 

 

} 

 

private void Button1_Click(object sender, System.EventArgs e) 

 

{ 

 

 Server.Transfer("b.aspx"); 

 

} 

 

 

 

b.aspxC#代码 

 

private void Page_Load(object sender, EventArgs e) 

 

{ 

 

 a newWeb; //实例a窗体 

 

 newWeb = (source)Context.Handler; 

 

 string name; 

 

 name = newWeb.Name; 

 

}

 

18.NET中有几种页面跳,有何区别

回答:有四种

1、         使用<a>标记,效率最高

2、         Response.Redirect(),有一个回发的过程

3、         Server.Transfer()控制权不会回来

4、         Server.Execute() 执行完页面后控制权会回来再执行本页面

12可以跳到任何有效的路径 ,34必须在同一个站点下,并且是aspx页面才可以跳