看视频学编程之C#中的类

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

 

定义一个类时,封装是一个重要原则。它的中心思想是:使用一个类的程序不关心类的内部如何工作,程序只需要创建一个类的实例,
然后调用类的函数,完成函数能做到的事,程序不需要关心这些函数是如何实现的。
封装的两个目的:
1、将方法和数据合并到一个类中;——为了支持分类
2、控制对方法和数据的访问;——为了控制类的使用
 
定义一个类
 
class Person
{
  string name;
  void SayHello()
  {
    Console.WriteLine("你好,我是{0}",name);
  }
}
类中的变量称为字段;
申明并创建一个类类型的变量:Person p1 = new Person();
可以把一个类的实例赋给同一类型的另一个变量: Person p2;  p2 = p1;
 
可访问性
 
一个方法或字段只允许从类的内部访问,就说它是私有的(private);private是类中成员默认的修饰符;
一个方法或字段可以从类的内部访问,也可以从外部访问,它就是公有的(public);
class Person
{
  private string name;
  public void SayHello()
  {
    Console.WriteLine("你好,我是{0}",name);
  }
}
name字段不能从类的外部访问到;SayHello()方法可以从类的外部访问到。
 
构造函数
   
构造函数用来创建对象,并且可以在构造函数中对对象进行初始化。
构造函数是用来创建对象的特殊函数,函数名和类名一样,没有返回值,连void都不用。
构造函数可以有参数,new对象的时候传递函数参数即可
构造函数可以重载,也就是有多个参数不同的构造函数。
如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
构造函数的调用顺序(父子)
 
 静态方法和共享字段
 
 不是所有的方法都必须通过类的实例来提供,有些与众不同的方法被称为工具方法;它们通常提供一个有用的功能,用static修饰;
一个方法申明为static就可以用类名来调用该方法:
class Person
{
  private string name;
  public void SayHello() {……}
  public static void SayNo() {……}  
}
Person.SayNo();
在static方法中,不能访问类中定义的任何实例字段,只能访问static字段,也只能直接调用类中的其他static方法;
非static方法必须先创建一个类的实例,才能在那个实例上调用这些方法。
 
可以定义一个static字段,
class Person
{
  private string name;                                  所有Person对象都共享一个number字段,每次创建一个Person对象
  public static int number = 0;                      number的值都自加1。
  public Person()                                          访问number时,要用Person作为前缀,Person.number;
  {
    name = "123";
    number++;
  }
  public Person(string name1)
  {
    this.name = name1;
    number++;
  }    
}
 
const字段和静态类
 
有一种特殊的静态字段,它的值永远不会改变,用const来修饰;
在字段是一个枚举,是一个数值类型,或者是一个字符串时,才能将字段申明为const字段;
const字段不能被赋值,如果非要赋值const字段的话将报错。
 
可以将一个类申明为static类。
静态类只能包含静态成员,静态类纯粹作为工具方法和字段的容器;
静态类不包含任何实例数据或方法,使用new来创建一个静态类是无意义的,非要创建,编译器会报错;
 
匿名类
 
匿名类是一个没有名字的类:
myAnonymousObject = new {Name = "234" , Age = 20};
用new来创建一个只有编译器才知道名称的类,你也不知道这个类的类型是什么,可以用var来申明一个隐式类型的变量:
var anotherAnonymousObject = new {Name = "123" , Age = 22};
在使用var,变量初始化的表达式是什么类型,编译器就用这个类型来创建变量;
在C#中根据字段的名称、类型、数量、顺序来判断匿名类的两个实例是否是具有相同的类型;
anotherAnonymousObject 跟 myAnonymousObject具有相同的字段,而且这些字段名称、类型、顺序都相同,所以
两个变量是同一个匿名类的实例。
匿名类内容的限制:
匿名类只能包括public字段,字段必须完全初始化,不可以是static字段,而且不能在其中制定任何方法!!!
 
 
 
原文地址:https://www.cnblogs.com/cctt/p/3142026.html