相同:1.都是创建对象的模板;2.每个对象都包含数据,并提供了处理和访问数据的方法;
区别:在内存中的存储方式、访问方式:类存储在堆栈(heap)上的引用类型;结构存储在栈(stack)上的值类型,且结构不支持继承;
包含:数据成员(字段、常量、事件)、函数成员(方法、属性、构造函数、终结器(finalizer)、运算符、索引器)
给方法传递参数:引用传递、值传递;(参数传递给方法前任何变量都必须初始化)
引用传递:被调用方法得到的就是这个变量,即内存中变量的指针->在方法内部对变量进行任何改变在方法退出后仍旧有效;
值传递:被调用的方法得到的是变量的一个相同的副本->方法退出后对变量的修改会丢失;
说明:在C#中,一般引用类型通过引用传递,值类型通过值传递;引用类型变量只包含对象的引用,作为参数传递时,传递的正是该对象的引用,在方法内对对象的修改会保留下来;值类型变量包含实际数据,传递给方法的是数据本身的副本。(字符串行为特殊,不同于一般的引用类型)
比较:对于复杂类型引用传递效率更高(值传递时,必须的复制大量数据)。
ref:将值类型通过引用传递给方法;
out:简化输入参数的初始化,C#通过Out关键字对变量进行初始化;
命名参数:(一般参数按顺序传递给方法)允许按任意顺序传递,eg:声明:void Func(string str_pa,int int_pa){//....} 调用 :Func(int_Pa1:124,str_Pa2:"MyStringParameter");
可选参数:必须为参数提供默认值,且可选参数必须为方法最后定义的参数
方法重载:方法名相同,但参数个数或者类型不同,与返回值无关,与ref,out无关;
原文:http://www.cnblogs.com/forevertime/p/5211376.html