码迷,mamicode.com
首页 > 其他好文 > 详细

C#结构

时间:2014-09-18 09:45:53      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   数据   div   sp   

结构的声明可以使用类似类的声明,譬如

A a=new A();

//{

  因为结构会隐式声明一个迷人的构造函数,而且与类不同的是无论是否有自定义构造函数,都存在默认构造函数;但是用户就会无法自定义无参数的构造函数(避免重复)

  不允许使用析构函数;

  可以使用实例构造函数和静态构造函数;

//}

 

还可以使用直接声明,譬如

A a;

此时要注意无法在赋值之前调用结构的成员,同时无法在所有数据成员被赋值之前调用函数;

 

结构的成员不能在结构内声明的时候进行初始化,即

1 struct Point
2     {
3         public int X=1;
4         public int Y=1;
5     }

会报错;

 

结构不能初始化为null,因为他是值类型,不是类类型;

 

对结构体赋值的时候,两个结构体s1,s2会相同,但是注意只是进行了值拷贝,但是类是进行的引用拷贝,即结构体中更改s1不会影响s2,但是在类中会影响,例如:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Struct
 8 {
 9     class CS
10     {
11         public int x;
12         public int y;
13     }
14     struct S
15     {
16         public int x;
17         public int y;
18     }
19     class Program
20     {
21         static void Main(string[] args)
22         {
23             CS cs1 = new CS();
24             CS cs2 = new CS();
25 
26             S s1 = new S();
27             S s2 = new S();
28 
29             cs1.x = 1;
30             cs1.y = 1;
31             cs2.x = 2;
32             cs2.y = 2;
33 
34             cs1 = cs2;
35 
36             Console.WriteLine("{0},{1}",cs2.x,cs2.y);
37 
38             cs2.x = 5;
39 
40             Console.WriteLine("{0},{1}", cs2.x, cs1.y);
41 
42             s1.x = 3;
43             s1.y = 3;
44             s2.x = 4;
45             s2.y = 4;
46 
47             s1 = s2;
48 
49             Console.WriteLine("{0},{1}",s1.x,s1.y);
50 
51             s2.x = 6;
52 
53             Console.WriteLine("{0},{1}", s1.x, s1.y);
54 
55 
56             Console.ReadKey();
57         }
58     }
59 }

 

分别改变2号变量的值,会发现此时在类中,1号中的数据也会更改(实际上它们就是同一块内存中的数据);但是结构体不会,因为两个结构都是值类型,无法进行引用传递,只能进行数值拷贝;

 

结构是隐式密封的,所有成员默认为private;同时无法被继承,因此protected,virtual,abstruct,internal等修饰符不适用;

可以使用new创建实例,可以使用overried声明覆写;

 

其他类似与值类型的操作适用于结构,例如out,ref参数类型等

 

C#结构

标签:style   blog   color   io   使用   ar   数据   div   sp   

原文地址:http://www.cnblogs.com/lhyz/p/3978547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!