c#结构的学习

  

结构是程序员定义的数据类型,非常的类似于类。有数据成员和函数成员。

  

但是也有区别:

  

1)类是引用类型,而结构是值类型;

  

2)结构是隐式密封的,不能被派生;

  

语法声明与类相似:

  

,

  
  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>   
  

  

,

  
  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>   
  

  

,

  

1)结构类型的变量不能使零;

  

2)两个结构变量不能引用同一对象

  

,

  
  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>   
  

,

  

  

,

  

在Main()分别对它们实例化声明两个个变量后,cs1和cs2分别指向在堆中的引用,而魔法石,第1章和ss2分别在栈中分配空间并存储。
  把一个结构赋值给另外一个结构,就是从一个结构中把值复值给另外一个结构。与类不同的是,复制类变量时只有引用被复制。

  

如上面的代码,类赋值结束后,cs2和cs1指向堆中的同一个对象。但是在结构赋值结束后,ss2成员的值和魔法石,第1章成员的值相同。

  

,

  

结构中的构造函数和析构函数

  

语言隐式的为每个结构提供一个无参数的构造函数。这个构造函数把结构的每个成员设置为该类型的默认值,引用成员被设置成空

  

预定义的无参数构造函数对每个结构都存在,而且不能删除或者重新定义。但是可以创建另外的构造函数,只要他们有参数。这和类不同,对于类,编译器只在没有其它构造函数声明时提供隐式的无参数构造函数。

  

要调用一个构造函数,包括隐式的无参数构造函数,要使用新运算符,即使不从堆中分配内存也使用新运算符。

  

如下面的实例:

  

,

  
  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>   
  

,

  

  

,

  

1)不能使用数据成员的值,直到显示的设置它

  

2)不能调用任何函数成员,直到所有数据成员已经被赋值

  

,

  
  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>  <李>  <李类=癮lt”>   
  

,

  

,

  

,

  <人力资源/>   

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。

  

 C #结构的学习“> <br/>
  , </p>
  <p>, </p><h2 class=c#结构的学习