.net编程之路_基础篇_原创 第三天

第三章    对象和类型
一、类和结构的区别
类是存储在堆当中的引用类型,如果需要存储在堆栈上可以在类名后加上 Struct, 例如类 CustomerList 是存储在堆上的,当定义类 CustomerListStruct 则存储在堆栈上。
结构是存储在堆栈中的值类型。
c# 中将 java 中的成员变量称为字段。
二、类的成员
数据成员:字段、常量、事件
函数成员:方法、属性、构造函数、终结器、索引器
事件与函数的区别:事件就是一个函数,但是它是一个特别的函数,只有在用户激发了某一事件之后才会促使事件的发生,而函数是操作类中数据的某些定义的功能。
方法:
说明 1 、每个方法都必须要定义自己的访问权限,而不可以使用 C ++中的块。
说明 2 、在定义方法时,参数必需包含参数类型和引用名称,例如: (int xx,string yy)
说明 3 、如果方法有返回值,那么必须要与 return 一起使用,例如: return(xx+yy)
一个方法可以带有多个 return 语句,当方法定义为 void 类型时,可以不要 return 语句。
方法的调用:分静态方法和非静态方法调用,有 JAVA 编程经验的老兄都知道了,就不��嗦了。
参数的传递:所有的参数都是通过值来传递的,但是当传递的是值类型的变量时,不管在方法体中对该变量作了什么改变,都不会影响该变量。但是如果变量传递的是引用类型的值,那么这个值会随着方法体中的引用而改变,例如数组等。字符串虽然是引用类但它例外。
强迫传递引用变量 ref 的使用 :通常是通过值传递变量的,但是如果需要强迫改变传递的值,即转化为引用类型。用法如下:
public staic void SomeMethod(int x, ref int y)
{
//do something here
Console.WriteLine({0}/n{1},x,y);
}
SomeMethod(x, ref y);    // 在调用函数时也要加上 ref
 
out 关键字:
当函数要返回多个值时,需要通过引用值方式进行返回,前面我们已经知道引用值的传递必须要初始化,是不是每个变量都先初始化再传递,这样显然比较的麻烦,这里我们就可以使用 out 关键字来简化过程。
下面是一个例子:
static int SomeMethod( out int i)
{
i= 100;
}
public static int main()
{
int i;
SomeMethod( out i);
Console.WriteLine(i);
}
方法的重载:
方法的名称相同,但是参数不一样。包括个数和类型。但是不能通过以下方式来区分
说明 1 、两个方法不能只在放回类型上有区别
说明 2 、两个方法不能用 out ref 区别
属性: 这个是在 java 当中没有的概念,从 VB 中继承而来。
格式如下:
public String SomeProperty
{
get  //get 访问器,获取 SomeProperty 属性
{
return "this is the property value"
}
set   //set 访问器,写 SomeProperty 属性,省略就是只读
{
//to set the property
}
}
如果定义的是一个私有的属性,则属性名采用 camal 大小写格式书写。
注意比较属性和方法的区别,定义方法是不一样的。
构造函数
构造函数没有返回类型,例如 public MyClass {};
如果构造函数被定义成了私有型访问级别 ,那么,这个类不能在任何的其他类中进行实例化。如果需要的话只有一个方法,通过在本类中创建一个静态方法,通过调用静态方法实例化这个类。这样编写有以下两种好处:
1 、类仅用做某些静态成员或者属性的容器,因此永远不用实例化。
2 、希望类只能通过某个静态成员函数进行实例化。即--对象实例化的类代理形式。
如果将构造函数设置为静态: 当一个类需要从外部类引入变量进行内部变量初始化时,可以使用静态构造函数,一个类只能有一个静态构造函数静态构造函数是在加载类时执行的,仅执行一次,所以这个静态构造函数只能调用类中的静态方法或者字段等。
从其他的构造 函数中调用构造函数 ,使用构造函数初始化器,例如:
Class car {
Private string description ;
Private string nwheels;
Public car (string model,unit wheels){
This.desciription = description;
This.nwheels = nwheels;
}
Public car(string model)
{
This.desciription = description;
This.nwheels = 4;
 
}
}
如上两个构造函数都初始化了同样的两个类,现在我们改写一下这个程序:
Class car {
Private string description ;
Private string nwheels;
Public car (string model,unit wheels){
This.desciription = description;
This.nwheels = nwheels;
}
Public car(string model):this(model.4)// 使用初始化器
{
}
}

你可能感兴趣的:(.net,对象,类型,休闲,.net编程之路)