一般情况下,一个类中往往包含字段,属性和方法。其中,属性是对字段的封装,以便于增加访问限制以及某些特别的逻辑。比如当字段被赋值的时候执行一段逻辑代码等等。经常用来做赋值验证。字段的赋值也可以通过构造函数的参数来传递。当对象建立的时候就可以初始化字段。一种简便的初始化字段的方法是对象初始化器,例如:A obj = new A{Value1=100,Value2=200};这样写可以自定义初始化任意字段,也防止写很多重载的构造函数。

  说完了字段于属性,我们说说方法。方法有很多类型,静态的,实例的,有参的,无参的,有返回值的和我返回值的。同一个类中,可以有多个方法同名,也就是重载方法。不过这些同名的方法的参数要不同。要么参数个数不同,要么参数类型不同,要么参数顺序不同。不过与方法的返回值无关。说到参数返回值,我们有时候需要方法返回多个返回值。那么我们可以使用out关键字。out关键字用在参数前,类似于C语言中的&,就是一个地址参数,表示要修改的变量的地址。等到函数执行完,这个参数变量也就被修改了,相当于返回值。另外,也可以用ref关键字,与out不同的是值传进来之前要初始化,否则会报错。当然,如果要返回的值很多,还是用类或者struct比较方便。.net4.0增加了个类叫Tuple,他代表一个有序的N元组。例如:Tuple<int,int>表示含有int类型值得二元组。使用的时候可以这样写:Tuple<int,int> tu = new Tuple<int,int>(1,2);那么,这个二元组里就放入了1和2.访问这个二元组时可以这样写:int item1 = tu.Item1; int item2 = tu.Item2; 这样,两个值就取出来了。同时,Tuple可以嵌套,这有点象数组。

  .net3.0引入了扩展方法,这个东西很好用。在不改变原有类的情况下,为类添加新的方法扩展。值得注意的是扩展方法必须是static的,所以他必需放在static的类中。写法是这样的:public void ExtendedMethod(this OriginalClass oc, int p1, string p2)。其中this关键字必须写。OriginalClass代表你要扩展的类。ASP.NET MVC 中的HtmlHeper有很多方法都是扩展而来,扩展自System.web.mvc.html下的InputExtensions类。这方面问题可以参考Asp.net mvc 开发基础学习笔记。建立自己的扩展类的时候,不要与原来的类重名,不然永远也不会调用到你的扩展方法。

  C#中的字段,属性和方法先写到这里,以后有时间会补充。如有任何错误请指正。