c#中的类和java中的类没什么太大区别。但是c#有些特有的关键字以及属性使得c#具有一些特性。
首先就是this关键字,this在c++和java中都有,可以表示当前对象,以及变量所属对象等。例如
public void somemethod(int hour1){
this.hour = hour1;
}
或者otherobject.bar(this) 把当前对象传给otherobject
还有就是指示变量属于哪个对象。
this.z = 5;
等等。这里不作赘述。
c#中还有using关键字,
class t{
using(font thefont = new font("a",10.0f))
{
//use thefont
}//compiler will call dispose on thefont
thefont在using中用完后会被直接析构,安全稳定。
同时要避免下面这种用法。
font thefont = new font()
using(thefont){
//use thefont
}//dispose
这样thefont也会被析构,所以外界不能再用thefont了。所以会存在风险。
在c#中,函数的变量传递默认是值传递,所以函数内部对变量的修改若没有返回的话是不会对外部产生影响的。
所以这里就要提到一个ref关键字。ref会使变量按引用传递。下面是例子:
int a = 0;
some(ref a){
a = 234;
}
此时在外部a就变成了234。
而这里还有out关键字,out的作用和ref没有太大区别,只是out a
可以不用对a进行初始化,但是需要声明。
这里还有一个简单的例子区分函数的重载和多态
重载
void myM(int p1);
void myM(int p1,int p2);
返回值不同不是重载
polymorphism多态
void myM(int a);
void myM(string a);
c#还有一个重要的特性就是它具有属性,即properties
属性可以很好的连接用户和开发者。这里有一个简单的示例
number就是一个属性,set和get可以设置权限,使得外部只能进行限定操作,
而在内部可以对number进行修改。这里有效的连接了用户和开发者。
还有readonly关键字
public static int a;可读可写。
----
public static readonly int a;只能读不能写。
还有inheritance & polymorphism
override 基类要public virtual void 才能显示出多态特性
还有隔断基类方法
public new virtual void Sort()下面是示例
运行之后是
在C中有public new virtual void,所以被隔断,直接停在B。
当然,c#支持运算符的重载,但是运算符重载要遵循实用原则,否则会增加写程序的难度。
以上就是我对c#中类方面关键字的总结。希望对大家有帮助。