C#学习基础概念二十五问(2)
来源:互联网 发布:什么网游支持mac 编辑:程序博客网 时间:2024/05/21 21:46
10.this 关键字的含义?
答:
this 是一个保留字,仅限于构造函数和方法成员中使用
在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用
this 保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化
在 C# 系统中,this 实际上是一个常量,所以不能使用 this++ 这样的运算
this 保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身
示例:
14
15
16
18
19
21
22
24
26
27
29
31
32
34
35
36
37
39
41
43
46
48
50
53
54
56
58
59
60
61
62
64
66
67
75
76}
77结果:
7837.5
81
82
11.可以使用抽象函数重写基类中的虚函数吗?
答:
可以,但需使用 new 修饰符显式声明,表示隐藏了基类中该函数的实现
示例:
10
12
12.密封类可以有虚函数吗?
答:
可以,基类中的虚函数将隐式的转化为非虚函数,但密封类本身不能再增加新的虚函数
示例:
10
11
13
15
17
13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set两个呢?
答:
如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后也应只有一个。如果基类中有 get 和 set两个属性访问器,那么继承类中可以只有一个也可以同时有两个属性访问器
14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
答:
abstract 修饰符不可以和 static、virtual 和 override 修饰符一起使用
15.接口可以包含哪些成员?
答:
接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构函数,而且也不能包含任何静态成员
16.类和结构的区别?
答:
类:
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存
类有构造和析构函数
类可以继承和被继承
结构:
结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。结构没有析构函数
结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口
示例:
根据以上比较,我们可以得出一些轻量级的对象最好使用结构,但数据量大或有复杂处理逻辑对象最好使用类。
如:Geoemtry(GIS 里的一个概论,在 OGC 标准里有定义) 最好使用类,而 Geometry中点的成员最好使用结构
100
101
103
107
109
110
111
116
117}
118结果:
119X:
120X:
121X:
122X:
124
17.接口的多继承会带来哪些问题?
答:
C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明
示例:
10
12
13
15
16
17
18
19
21
23
25
26
27
28
29
31
32
33
35
37
38
40
41
43
44
45
47
48
49
50
51
53
55
56
58
61
66
67}
68结果:
69Count
70Count
72
73
74
18.抽象类和接口的区别?
答:
抽象类(abstract class)可以包含功能定义和实现,接口(interface)只能包含功能定义
抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定,因此反映的是事物的外部特性
分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”
为外部提供调用或功能需要扩充时优先使用接口
- C#学习基础概念二十五问(2)
- C#学习基础概念二十五问(3)
- C#基础概念二十五问(二)
- C#基础概念二十五问[转]
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问
- C#基础概念二十五问 (转载)
- C#基础概念二十五问
- C#基础概念二十五问[上篇]
- C#基础概念二十五问 [下篇]
- C#基础概念二十五问
- 北京 离北平最远的城市
- C语言字符及字符串处理函数
- 倒排索引-搜索引擎的基石
- poj——1985——Cow Marathon
- html中lazyload的实现。
- C#学习基础概念二十五问(2)
- C#学习基础概念二十五问(3)
- 学习思考 耐得寂寞 拥得繁华 (转)
- 反垃圾邮件网关 需关闭邮件中继开启SMTP认证
- 关于#include<iomanip> 中iomanip的作用
- 转:学C++的50条建议
- 古老印度的故事
- SqlDataAdapter和DataSet
- 常用正则表达式(一)