c#课堂笔记Word文档格式.docx
《c#课堂笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《c#课堂笔记Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
第二章c#和visualstudio2005
1.自定义起始页的新闻区:
A.在工具菜单中选择选项命令
B.展开环境,然后单击启动.
C.在起始页新闻频道输入新闻RSS源的url
D.单击确定
第三章变量,数据类型和表达式
1.Shift+alt+f10用于更新对重命名对象的引用的选项.
2.变量就是存储信息的基本单元.
3.命名变量:
一.字母,数字和下划线
二.不能与系统关键词重名
三.以小写字母开头
四.变量应该具有描述性质
五.驼峰
4.声明变量:
数据类型+变量名;
声明变量之后就可以将其赋值.
5.常量:
圆周率π
生命常量:
Const数据类型常量名字;
6.c#的数据类型
数据类型定义了数据的性质,表示,存储空间和结构.
C#数据类型可以分为值类型和引用类型
7.值类型的用来存储实际值,而引用类型用来存储对实际数据的引用.
值类型由简单类型,枚举类型和结构类型组成.
引用类型包括:
class,interface,array,string和delegate组成.
8.逻辑运算符和表达式
运算符
描述
!
非
&
And短路
And非短路
||
Or短路
|
Or非短路
^
Xor异或
True和false
重载的时候使用
第四章条件语句
1.临时变量:
在程序代码中没有出现,没有名字
作用:
函数的返回型,参数的传递和值传递.
第五章面向对象
1.
2.
3.
试题
分析题
1、分析下列代码段:
staticvoidMain(string[]args)
{
String[]words=newstring[]{"
a"
"
b"
c"
};
foreach(stringwordinwords)
{
word="
abc"
;
Console.WriteLine(word);
}
Console.ReadKey();
}
最终的运行结果是什么?
(C)
A.bcacab
B.abcabcabc
C.不能正确编译
D.abc
Word为迭代变量,无法为它赋值.
2、分析下列程序代码:
usingSystem;
classProgram
stringtestString="
VisualStudio2005"
stringnewString=string.Empty;
foreach(charchintestString)
if(ch=='
i'
||ch=='
u'
)
continue;
newString+=ch.ToString();
Console.WriteLine(newString);
哪项的输出是正确的?
A.iuui
B.V
C.VsalStdo2005
D.VisualStudio2005
分析下列类的定义:
publicclassBase
protectedBase()
{
Console.Write("
Base!
"
);
}
publicclassMyClass:
Base
publicMyClass()
MyClass!
在Main中执行下列语句MyClassobj=newMyClass();
后,Console的输出为(C).
A.MyClass!
B.Base!
C.Base!
D.MyClass!
分析下列程序:
publicclassclass4
privatestring_sData="
publicstringsData
Set
_sData=value;
在Main函数中,在成功创建该类的对象obj后,下列哪个语句是合法的?
(A)
A.obj.sData="
Itisfunny!
B.Console.WriteLine(obj.sData);
C.obj._sData=100;
D.obj.set(obj.sData);
5、分析下列类的定义:
protectedBase(){Console.Write("
publicMyClass(){Console.Write("
在Main中执行下列语句后,Console的输出为(C).
MyClassobj=newMyClass();
6、对下面的代码
publicclassDoor
publicclassHouse
publicHouse()
Doordoor=newDoor();
哪段描述是错误的?
(B)
A、Door是一个类。
B、House是一个从Door继承的类。
C、House的构造函数中声明了一个名为door的变量。
D、door是一个对象。
7、写出程序的输出结果
classClass1
privatestringstr=Class1.str;
privateinti=0;
staticvoidStringConvert(stringstr)
str=stringbeingconverted.;
}
staticvoidStringConvert(Class1c)
c.str=stringbeingconverted.;
staticvoidAdd(inti)
i++;
staticvoidAddWithRef(refinti)
staticvoidMain()
inti1=10;
inti2=20;
stringstr=“str”;
Class1c=newClass1();
Add(i1);
AddWithRef(refi2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
10
Console.WriteLine(i2);
21
Console.WriteLine(c.i);
0
Console.WriteLine(str);
Console.WriteLine(c.str);
8、.写出程序的输出结果
publicabstractclassA
publicA()
{
Console.WriteLine('
A'
publicvirtualvoidFun()
Console.WriteLine(A.Fun());
publicclassB:
A
publicB()
B'
publicnewvoidFun()
Console.WriteLine(B.Fun());
publicstaticvoidMain()
Aa=newB();
a.Fun();
结果:
A
B
9、写出程序的输出结果:
publicclassA
publicvirtualvoidFun1(inti)
Console.WriteLine(i);
publicvoidFun2(Aa)
a.Fun1
(1);
Fun1(5);
publicclassB:
publicoverridevoidFun1(inti)
base.Fun1(i+1);
Bb=newB();
Aa=newA();
a.Fun2(b);
b.Fun2(a);
2
5
1
6
10、在下面的例子里
classA
publicA()
PrintFields();
publicvirtualvoidPrintFields(){}
classB:
A
intx=1;
inty;
publicB()
y=-1;
publicoverridevoidPrintFields()
Console.WriteLine("
x={0},y={1}"
x,y);
当使用newB()创建B的实例时,产生什么输出?
11、下列语句是MyClass的一部分,obj是MyClass的一个对象。
privateclasssubclass
publicintdata;
voidchange(refintx){x=1;
publicvoidtest()
subClasss=newsubClass();
s.data=100;
change(refs.data);
Console.WriteLine(s.data);
则调用obj.test()后。
控制台输出(D)。
A.100B.101
C.0
D.1
12、已知类Base、MyClass的定义如下
classBase
publicvoidHello()
System.Console.WriteLine("
HelloinBase!
classDerived:
Base
publicvoidHello()//不用new也要隐藏但会警告
HelloinDerived!
则下列语句在控制台中的输出结果为__B___。
Derivedx=newDerived();
x.Hello();
A.HelloinBase!
B.HelloinDerived!
C.HelloinBase!
D.HelloinDerived!
HelloinBase!
13、下述代码用于重写Message方法。
请分析下述代码,并更正错误代码行。
1.interfaceIMsg
2.{
3.voidMessage();
4.}
5.publicclassMyClass:
IMsg
6.{
7.publicvirtualvoidMessage()
8.{
9.
Console.WriteLine("
MyClass"
10.}
11.}
12.publicclassMyDerivedClass:
MyClass
13.{
14.publicoverridevoidMessage()
15.{
16.
MyDerivedClass"
17.}
18.}
14、下面代码功能是对数组进行遍历,请分析下列代码段并在空白行补全C#代码。
(4分)
staticvoidMain(string[]argz)
string[]myString={"
windows"
form"
dialog"
foreach(stringstrinmyString)
15、下列程序执行的结果是输出(A)。
usingSystem;
classtest
staticvoidMain()
for(inti=0;
i<
=100;
i++)
A、0到100之间的所有整数B、1到100之间的所有整数
C、0到100之间的所有偶数D、0到100之间的所有奇数
16、下列程序执行的结果是输出(C)。
classtest
for(inti=1;
if(i%2==0)
A、1到100之间的所有整数B、0到100之间的所有整数
C、1到100之间的所有偶数D、1到100之间的所有奇数
17、下列程序执行的结果是输出(C)。
ints=0;
s=s+i;
Console.WriteLine(s);
A、1到100之间的整数之和B、0到100之间的所有整数
C、1到100之间的偶数之和D、1到100之间的奇数之和
18、下面的例子
classA
publicstaticintX;
staticA(){
X=B.Y+1;
classB
publicstaticintY=A.X+1;
staticB(){}
staticvoidMain(){
X={0},Y={1}"
A.X,B.Y);
19、读下面程序分析结果
publicclassA
publicvirtualvoidfun1(inti)
publicvoidfun2(Aa)
a.fun1(3);
fun1(7);
A
publicoverridevoidfun1(inti)
Console.WriteLine(i+1);
publicstaticvoidMain()
Aa=newA();
Bb=newB();
a.fun2(b);
b.fun2(a);
结果
4
7
3
8
一、单选题:
1、C#程序设计语言属于什么类型的编程语言(A)。
A.高级语言B.自然语言C.机器语言D.汇编语言
2、C#中声明一个命名空间的关键字是(A)。
A.namespaceB.nameplaceC.thisD.as
3、C#的数据类型有数值类型和(D)类型两种。
A.结构类型B.关系类型C.调用类型D.引用类型
4、对于在代码中经常要用到的且不会改变的值,可以将其声明为常量。
如圆周率PI始终为。
现在要声明一个名为PI的圆周率常量,下面哪段代码是正确的?
A.constfloatPI;
PI=3.14f;
B.constfloatPI=3.14f;
C.floatconstPI;
D.floatconstPI=3.14f;
假设a不等于b,并且b不等于false,下列哪个表达式的运算结果为false。
A.a!
=b
B.a=b
C.a==b
D.a<
>
b
6、下面有关虚方法的描述正确的是(C)。
A.虚方法能在程序运行时,动态确定要调用的方法,因而比非虚方法更灵活,更方便
B.在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符
C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符
D.在重写虚方法时,需要同时带上override和virtual修饰符
7、下列关于继承说法中,哪个选项是正确的?
A.继承是指派生类可以获取其基类特征的能力
B.继承最主要的优点是提高代码性能
C.派生类可以继承多个基类的方法和属性
D.派生类必须通过base关键字调用基类的构造函数
用关于重载,以下叙述错误的是(D)。
A.重载是指在类的内部存在若干个方法名称一致但是参数列表不同的方法
B.方法重载是指创建多个名称相同的方法,其中每个方法都在某些方面具有唯一性,以便编译器能够正确区别它们
C.重载构造函数的方式与重载方法的方式相同
D.方法的重载允许两个方法的名称和参数列表相同,而返回类型不同
下列关于多态的说法中,那个是正确的?
A.虚方法是实现多态的唯一手段
B.重写虚方法时可以为虚方法指定别称
C.多态性是指以相似的手段来处理不相同的派生类
D.抽象类中不可以包含虚方法
1,
请你说说.NET中类和结构的区别?
答:
结构和类具有大体的语法,但是结构受到的限制比类要多。
结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。
结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。
申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。
与类不同,结构的实例化可以不使用New关键字。
类可以实现接口。
2,
死锁的必要条件?
怎么克服?
系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
3,
接口是否可以继承接口?
抽象类是否可以实现接口?
抽象类是否可以继承实体类?
接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。
4,