首先说来说一说值类型与引用类型的那点事
1、值类型与引用类型的区别
值类型是在独立的内存中保存自己的值,调用的时候调用的是值本身。而引用类型则调用的是内存中的地址
比如:
<span style="font-size:18px;">int a,b; a=1; b=a; Console.Write(a+" "+b); b=2; Console.Write(a+" "+b);</span>该语句输出的第一个是1 1,第二个输出的是 1 2,即在值类型中改变b的值不会对a的值产生影响,它们的值是放在不同的内存中的。
而引用类型
<span style="font-size:18px;">public class A { public int a1=0; } static void Main(string[] args) { A a = new A(); a.a1 = 2; Console.WriteLine(a.a1); A a2 = a; a2.a1 = 5; Console.WriteLine(a.a1); }</span>输出的第一个a.a1=2;第二个a.a1=5;可以看到通过改变a2.a1,改变了a1的值。
2、介绍完引用类型与值类型后,就要介绍一下装箱与拆箱了。
装箱在值类型向引用类型转换时发生拆箱在引用类型向值类型转换时发生
object
obj = 1;是将值类型转化为引用类型
而int a=(int)obj;是将引用类型转化为值类型。
3、C#中string s="";与string s=null;的区别;
string s="";初始化了s并且分配了内存,而string s=null;只是初始化了s.
4、const与readonly的区别
Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。
5、关于this的一般使用情况
(1)this指当前对象,如在类中中this一般指当前类,通过this可以获得该类的某些方法与属性。
举个例子 class A { string name; public Employee(string name, string alias) { this.name = name; this.alias = alias; //那么加this就是指上面类里面那个name,不加this就是指方法里参数的name。 } }如果方法的参数名称与类的属性不重名,那么也可以不使用this来区分。
6、不同类间传值
(1)、可以通过构造方法来进行传值
如:
class A { private string a; A(string s) { this.a=s; } } class B { private string b="ax"; B() { A a=new A(<span style="line-height: 21.6px;">b</span><span style="line-height: 21.6px;">);//通过构造方法将ax传递给A中的a.</span> } }(2)、通过get set方法进行传值。将所需要传递的值通过get set方法进行传递:如
class A { public static string inherit { get; set; } } class B { private string b="ax"; B() { A.inherit=b;//将ax赋值给inherit; } } class C { private string c=""; C() { c=A.inherit;//将zx赋值给c; } }
7 结构与类的区别
1、结构使用关键字struct 类使用关键字class
2、结构是值类型 而类是引用类型(值类型与引用类型的区别看上)
3、结构不支持继承。
4、结构成员全部默认是public 类的变量和常量成员默认是private,其他是public
5、在结构中声明变量时不能初始化。
6、在结构中无法定义不带参的构造函数。
暂时这些以后想到再补充。