1、简述private、protected、public、internal修饰符的作用
private只有在声明他们的类和结构体中才可访问 Protected在它的类中或派生类中访问 Public对访问成员没有限制
Internal对同一项目的文件中,内部类型或成员才是可访问的
2、 值类型和引用类型的区别,结构体与类的区别
值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。,类属于引用类型的数据类型,结构体属于值类型的数据类型,这两种数据类型的本质区别主要是各自指向的内存位置不同
3、C#中的接口、类、抽象类的有什么不同
接口是一种契约,是不可实例化的,并且可以继承多个接口,类可以继承多个接口,类只能单继承类,接口中不可有方法体,并且不能指定修饰符。 抽象类是类的一种特殊形式抽象类中可以有方法的实现,也可以指定方法的访问修饰符。但不能实例化
4、简述一下static修饰符的有关功能
被static修饰的成员不能通过实例来访问 a、修饰字段,表示只有一个副本
b、修饰方法,表示此方法于实例无关的,应该是线程安全的 c、修饰类,表示此类是静态类,此类不能实例化
d、修饰构造函数,表示此构造函数在实例化,或第一此调用静态成员时调用,只调用一次。
5、说明一下new修饰符有关用处?
1、实例化如:New Class() 2、public new 隐藏基类的方法
3、在泛型类申明中的任何类型参数都必须有公共的无参构造函数 6、使用sealed、virtual、override、abstract修饰的类有什么特点?
sealed表示不可继承的
virtual表示虚方法,可被覆盖 override,覆盖基类方法
abstract表示抽象方法,该类不可实例化
7、如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序
8、.override与重载的区别
重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。
9、在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?u using 引入名称空间或者使用非托管资源 new 新建实例或者隐藏父类方法
10、请列出c#中几种循环的方法,并指出他们的不同 A:4种:
For :使用于确定次数的循环 Foreach:使用于遍历的元素只读
Do„while: 次数不确定条件随机变化但至少要保证能被执行一次 While:次数不确定 条件随机 变化
11、有哪些主要的数据类型?它们之间是怎样进行相互转换的?
值类型包括整数类型、字符类型、浮点类型、布尔类型、结构类型和枚举类型。引用类型包括类、接口、委托、数组、字符串等。
C#中提供了隐式类型转换和显式类型转换。 12、 类和对象的区别和关系是什么?
类是对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。关系类是对象的模板,对象是类的实例。
13、 静态字段与非静态字段有什么区别?
加static修饰字段时,则该字段为静态字段,静态字段不属于某个实例对象,只与类相关联,因此,对静态字段的访问只与类关联,访问时使用类名.字段,实例字段的访问与实例对象关联,访问时使用对象名.字段。
14、 接口声明主要由几部分组成,各部分的作用是什么?
接口声明形式:访问修饰符 interface 接口名
其中:接口的访问修饰符有new、public、protected、internal和private,各个修饰符都代表不同的访问权限。new修饰符仅允许在类中定义的接口内使用,它指定接口隐藏同名的继承成员。public、protected、private和internal修饰符用于控制接口的可访问性,与前面所介绍的意义相同。接口名称通常以I开头。要实现该接口,必须有类继承该接口。
15、在某些场合中,使用接口继承而不是类继承,为什么?
程序需要许多彼此无关的对象类型来提供特定功能,此时更适合使用接口 接口可以在基类不同的类之间实现多态性
接口比基类更加灵活,因为可以定义实现多个接口的单个实现 若不需要从基类继承实现,则接口是更好的选择 若不能使用类继承,则可以使用接口
16、C#中处理异常采用的结构化异常处理语句有哪些?并简要说明。
C#中共包含3种结构化异常处理语句:try„catch语句,try„finally语句和try„catch„finally语句。其中:try块语句中用来指明有可能出现异常的代码;catch块内指明对所出现的异常的处理,若没有异常,则catch块不执行;finally块是无论是否发生异常均要执行的代码,主要用来清理资源或执行要在try块末尾执行的其它操作,或不需要清理代码,则可
以不使用该块。
17、 什么是继承?
继承是这样的一种能力,它可以使用现有类的所有功能,并且在无须重新编写原来的类的情况下对这些功能进行扩展。使用继承而产生的类被称为派生类或子类,被继承的类称为基类或父类。
18、什么是多态性?
继承使得在原有的类基础之上,对原有的程序进行扩展,从而提高程序开发的速度,实现代码的复用。同一种方法作用于不同对象可以产生不同的结果,这就是多态性。C#中的多态包括两类:编译时多态性和运行时的多态性。
1、完下列语句后,x和y各为何值? ① int x=20;
int y=++x; X=__21__,y=___21__ ② int x=- 10;
int y=(x>=1)? 100:10; X=_-10___,y=__10_ ③ int x=100;
int y=(x= =1)?++x:x++; X=_100___,y=_101____
2、执行以下程序段后,变量x的值是 6 ,变量y的值是 20 。 int x = 5, y = 10; if (x <= 10 && y >= 10) {
x++; y += 10; } else {
x--; y--; }
3、分析下面这段代码,执行后count的值为________15__________。
int i, j ,count=0; for(i=3;i>0;i--)
for(j=0;j<5;j++) { count++; }
4、 执行下面的程序段后,变量a、b的值分别为____1___1______ 。 int x = 2, a = 0, b = 0; switch (x) {
case 0:
b++; break; case 1: a++; break; case 2: a++; b++; break; }
5、有循环控制程序段如下:执行该程序后,输出结果是____6 3 2_____ 。 int x=5,y=4,z=1; while(x++!=(y-=1)) { z+=1; if(y 6、写出以下程序运行结果______45 29 42___________。 using System; class Test { 0 1 2 3 4 5 6 7 static int[] a = { 11, 12, 13,14, 15, 16, 17, 18 }; public static void Main() { int s0, s1, s2; s0 = s1 = s2 = 0; for (int i = 0; i < 8; i++) { switch (a[i] % 3) { case 0: s0 += Test.a[i]; break;12+15+18 case 1: s1 += Test.a[i]; break; 13+16 case 2: s2 += Test.a[i]; break;11+14+17 } } Console.WriteLine(s0 + \"\" + s1 + \"\" + s2); } } 7、有以下程序段: int i=0,s=0; do { if(i%2==1) { i++; continue; } i++; s +=i; } while(i<5); MessageBox.Show(\"s =\"+ s.ToString()); 执行后输出结果是 ___9___。 8、该程序的运行结果为:__100___101___20__101__20__。 public class A { public int a = 100; public void m() { a++; Console.WriteLine(a); } } class B : A { new public int a = 20; new public void m() { base.m( ); Console.WriteLine(a); } public static void Main() { A x = new A(); Console.WriteLine(x.a); x.m(); B y = new B(); Console.WriteLine(y.a); y.m(); } } 9、写出以下程序运行结果为____8__11__14__17_. using System; class Test { const int N=5; public static void Main (){ int a = 0; for(int i=1; i Console.write (c + “” ); } } 10、写出以下程序运行结果______________120___。 public class Student { public string name; public string number; public double subsidy = 80; public Student(string name, string number) { this.name = name; this.number = number; } public void ShowInfo() { Console.WriteLine(\"{0}\\n{1}\ Console.WriteLine(\"{0}\ } } public class AdvSubsidy { public static double Caculate(Student E) { return (1.5 * (E.subsidy)); } } public class AppMain { public static void Main() { Student s1 = new Student(\"zhanghua\ s1.ShowInfo(); } } 11、写出以下程序运行结果为____84.78_______. class Round { public double r; public Round(double r) { this.r = r; } public virtual double Area() { return (3.14 * r * r); } } class Sphere : Round { public Sphere(double r) : base(r) { } public override double Area() { return (3.14 * r * r * r); } } class App { static void Main() { Sphere s = new Sphere(3); Console.WriteLine(s.Area()); } } 12、写出以下程序运行结果为__i=7_____s=12______。 using System; class Test { public static void Main () { int s=0; for (int i=1; ; i++) { if (s>10) break; if (i%2==0) s+=i; } Console.writeLine (\"i, s=\" + i + \} } 1、编写Test类,包含name、age和addr,创建一个Test t=new Test(“张三”,22,”抚顺”);使用Display方法,将姓名、年龄和住址输出,并在Main中调用显示。 classTest { publicstring name; publicint age; publicstring addr; public Test(string name,int age,string addr) { this.name = name; this.age = age; this.addr = addr; } publicvoid Display() { Console.WriteLine(\"姓名是\" + name); Console.WriteLine(\"年龄是\" + age); Console.WriteLine(\"住址是\" + addr); } staticvoid Main(string[] args) { Test t = newTest(\"张三\",22,\"抚顺\"); t.Display(); } } 2、根据如下界面,写出程序: string username; string password; username = textBox1.Text.Trim(); password = textBox2.Text.Trim(); if (username == \"admin\"&& password == \"123456\") { MessageBox.Show(\"登录成功!\", \"登录信息提示\"); } else { MessageBox.Show(\"登录失败!\", \"登录信息提示\"); } 3、编一个程序,定义常量Pi=3.14159265,从键盘上输入半径r,求出圆的面积。 Public constdouble Pi = 3.14159265; {double r; double s; Console.WriteLine(\"请输入圆的半径:\"); r = double.Parse(Console.ReadLine());// s = Pi * r * r; Console.WriteLine(\"圆的面积:\" + s);} 因篇幅问题不能全部显示,请点此查看更多更全内容