标签:
今天在拜读Stoneniqiu的【读书笔记】--代码整洁之道时,遇到一个词叫做"实体变量",原谅我如此无知吧,这么基础的东西到现在都不清楚,汗颜。于是就迅速去看看这个变量到底是什么玩意儿……
实体变量(实例变量),说道这个东东,就得说说类变量(静态变量)。
先看个类:
public class ExampleVariable { public static int Num1 { get; set; } public int Num2 { get; set; } public void ChangeNums(int n1,int n2) { Num1 = n1; this.Num2 = n2; } public int[] GetNums() { return new int[] { Num1, Num2 }; } }
带static的Num1就是类变量,不带static的Num2就是实体变量了。那他们有什么区别呢?
看一段小小的小代码:
public MainWindow() { InitializeComponent(); ExampleVariable example1 = new ExampleVariable(); example1.ChangeNums(10, 11); int[] nums1 = example1.GetNums(); tbk1.Text = string.Format("example1:Num1={0},Num2={1}", nums1[0], nums1[1]) ;//类中的static不属于任何对象 tbk1.Text+= Environment.NewLine + Environment.NewLine; ExampleVariable example2 = new ExampleVariable(); example2.ChangeNums(20, 21); nums1 = example1.GetNums(); tbk1.Text += string.Format("example1:Num1={0},Num2={1}", nums1[0], nums1[1]) ;//类中的static不属于任何对象 tbk1.Text+= Environment.NewLine ; int[] nums2 = example2.GetNums(); tbk1.Text += string.Format("example2:Num1={0},Num2={1}", nums2[0], nums2[1]);//类中的static不属于任何对象 }
运行结果:
可以看出:
① 类中Num1不属于this指针,this.Num1这样的写法是不正确的;但是Num2是属于This的,完全可以this.Num2;
② Num1是static的,只能在类ExampleVariable中被使用,如果该类对象需要修改他的值,必须通过成员函数来实现,
但是Num2完全可以在对象中直接调用:对象.Num2;
③ Num1属于整个类,所有对象对其只有1分拷贝。当对象2修改了Num1时,对象1的Num1也将改变,因为2个对象公用Num1,但是Num2就不会变化。
标签:
原文地址:http://www.cnblogs.com/YunGy/p/4922622.html