2.声明类之后,通过new创建【类对象】,它是一个引用类型的变量。
3.静态字段是用【 static】修饰符声明的字段,无论存在多少个类实例,它们都共享一个字段副本。
4.定义方法时使用的参数是【形参】,调用方法时使用的参数是【实参】。 5.数据类型说明符用来说明方法返回值的类型,如果没有返回值,则类型说明符应为【void】。 6.下列方法的作用是求两个数的较大数,并把较大数作为返回值,请填空。 float max_v(【 (1)】) { float max; max=a; if(max
【(2)】;
} (1) int a, int b (2) return(max)
7.在调用方法时,要使参数按引用方式进行传递,需要使用关键字【ref】。
8. 在调用方法时,要使参数按输出方式进行传递,需要使用关键字【out 】,此时并不要求实参变量已经初始化。
9.在类的成员声明时,若使用了【protected】修饰符,则该成员只能在该类或其派生类中
进行访问。
10.类的静态成员属于【类】所有,非静态成员属于类的实例所有。 11.已知某类的类名为ClassA,则该类的析构函数名为【~ClassA 】。
12.C#方法的参数有四种,分别是:值参数(对应值传递)、引用参数(对应地址传递)、
输出参数和参数数组,在形参中声明参数数组时应使用【params】关键字。
13.要给属性对应的数据成员赋值,通常要使用set访问器,set访问器始终使用【 value】
来设置属性的值。
14.声明一个公有委托类型MyFun1,该委托类型可以与无参且返回值为int类型的方法相
关联,则该声明语句应为【public delegate int MyFun1(); 】。 15.下列程序的输出结果是【30】。 class Program { static void sub(int x, int y, int z)
{ z=x*x+y*y; }
public static void Main(string[] args) { int a=30; sub(5, 2, a);
Console.WriteLine(\}
}
16.下列程序的运行结果是【3,5 】。 class program { static void Func(int a, out int x,out int y) { x=a/10; y=a; } static void Main() { int m=35; int a, b; Func(m, out a,out b);
Console.WriteLine(\
} }
17.下列程序的运行结果是【18】。
class A
{ private int x;
public static A operator -(A b, A c) { A a=new A(); a.x=b.x * c.x; return a; }
public void setx(int x) { this.x=x; } public int getx(){ return x; } }
class Program { static void Main() { A a=new A(); a.setx(3); A b=new A(); b.setx(6); A c = a - b;
Console .WriteLine (\ } }
18. 下列程序的运行结果是【中国地质大学】。
public class University { const int MAX = 10;
private string[] name = new string[MAX]; public string this[ int index ] { get
{ if (index >= 0 && index < MAX) return name[index];
else return name[0]; } set
{ if (index >= 0 && index < MAX) name[index] = value; } }
class Program { static void Main()
{ University un=new University(); un[0] = \清华大学\ un[1] = \北京大学\ un[2] = \中国地质大学\ Console.WriteLine(un[2]); } } 三.改错题
}
(说明:下列程序中部分下划线的代码有错误,请将有错误的部分改正过来,并说明原因) 1. class A { A(){ } } A a=new A();
答:“A(){ }”应改为“public A(){ }”。因为在默认修饰符的情况下,类中的成员被默认为私有
成员,因此在用A创建a时试图调用此构造函数,会因此构造函数为私有成员而拒绝访问。 2. class A { public static int x=100; public int y=200; } class Program { static void Main(string[] args) { A a=new A(); a.x=10; a.y=20; } }
答:“a.x=10;”应改为“A.x=10;”。因为x是类A中的静态成员。 3. class A { A(){ } void A(){ } private A(int x){ } private A(int y){ } }
答:“void A(){ }”应改为“A(){}”,因为构造函数不能带任何返回类型修饰符。“private A(int
x){ }”和“private A(int y){ }”实际上是同一个构造函数,应删除其中一个。 4. class A
{ int f(){ return 1; } void f(){ } void g(int x){ } void g(int y){ } }
答:类A中试图重载函数f()和函数g(),但函数的重载是通过定义不同的参数个数和类型来实现的,其返回类型不能说明函数的重载特性,因此应删除其中的一个f()函数;类似的原因,函数g()中的形参名不同也不能说明函数的重载特性,实际上这两个g()函数是一样的,因此也需去掉其中之一。 四.问答题
1.简述类和对象的关系。 2.简述面向对象的基本特征。
3.类的声明格式中包含哪些部分?各有什么意义? [访问修饰符] class 类名[:基类类名] {
成员定义列表; }
4.什么是实例方法?什么是静态方法?
5.类可以使用哪些修饰符?各代表什么含义? 6.简述构造函数和析构函数的作用。
? 是在创建对象时自动执行的类方法。 ? 通常用于对成员变量进行初始化。
? 在类对象被系统销毁时自动执行。
? 析构函数也仅仅执行一次,通常用于对象被销毁前的“扫尾”工作。
7.什么是属性?
? 是一种特殊的类成员,目的是保护字段、对字段的赋值和取值进行限定。 答:属性是C#中的一种语法结构。如下:
private int _年龄; public int年龄
{ set { if (value > 0){ _年龄= value;} } get{ return _年龄; } }
8.为什么使用属性?
答:属性是实现封装的一种方式,起到保护类成员变量的作用。调用简洁方便。而且,
通过属性可以访问私有成员变量。
9.属性的类型有什么?
答:属性类型有:读写属性,只读属性,只写属性。 11.什么是索引器?
答:索引器是C#中的一种语法结构。如下:
[访问修饰符] 数据类型this[数据类型标识符] { get{}; //get访问器
set{}; //set访问器 }
12. 索引器的作用是什么?
答:作用:索引器是实现封装的一种方式,起到保护类成员的作用;同时使用起来简单
方便:为集合对象创建索引器后,可以对类对象指定索引来直接访问数组元素即用索引数组的方式索引对象。
13. 索引器可以重载吗?可以为索引器指定几个索引器参数?
答:索引器可以重载。可以为索引器至少指定一个索引器参数。 14.什么时候使用属性,什么时候使用索引器?
答:类中有成员变量就应该有属性。当成员变量是集合类型的时候,可以创建索引器。 五.程序阅读题
1.阅读下列程序,写出程序的输出结果。考察类对象
public class TPoint
{ int x, y; public void setpoint(int x1,int y1) { x = x1; y = y1; }
public void dispoint()
{ Console.WriteLine(\点:({0},{1})\ } }
class Program
{ static void Main(string[] args) { TPoint p1, p2; p1= new TPoint(); p1.setpoint(2, 6); p2 = p1; p2.setpoint(8, 3);
p1.dispoint(); p2.dispoint(); } }
点:(8,3) 点:(8,3)
2.阅读下列程序,写出程序的输出结果。考察方法参数传递
class Program
{ static void f1(ref int a, ref int b, out int sum, out int sub) { int t; t=a; a=b; b=t;
sum = a + b; sub = a - b; }
public static void Main(string[] args) { int x=10, y=20,xx=30,yy=40; f1(ref x, ref y, out xx, out yy); Console.WriteLine(\ } } x=20,y=10,xx=30,yy=10
3.阅读下列程序,写出程序的输出结果。考察索引器
public class Weeks
{ string[] week= { \ public string this[int i]
{ get
{ if (i >= 0 && i< 7) return week[i]; else return week[0]; } set
{ if (i >= 0 && i< 7) week[i] = value; } } }
class Program
{ static void Main()