C#结构体

 1 using System;
 2 
 3 namespace C_9_4
 4 {
 5     class Program
 6     {
 7         struct Student
 8         {
 9             public int xuehao;
10             public string banji;
11             public string name;
12             public int age;
13            // private int IQ;
14            //访问级受限制,这里只能用public,不然只能读,不能写。
15            //并且,这里struct里面必须全部完成赋值,才能给其他的数据赋值,
16            //即如果这里我写了private,他将一直占用一个位置,让s1=s2一直报错。
17         }
18         static void Main(string[] args)
19         {
20             Student s1, s2,s4;//声明s1,s2变量的存在,这里只在栈中间给了空间
21                            //堆空间是没有空间给他们的
22             Student s3 = new Student ();
23             //这里相当于两步,第一步student s3,声明变量
24             //第二步 s3= new Student();在堆中间分配内存空间
25             //这里只是分配了空间,但是里面没有值。
26 
27 
28             //s1赋值
29             s1.age = 20;
30             s1.banji = "轨道1901";
31             s1.name = "我是傻逼";
32             s1.xuehao = 250;
33             //s1.IQ = 250;
34 
35             //把s1的数据赋值到s2上面去。
36             s2 = s1;
37             s2.name = "李少龙科三挂科" ;
38             s2.banji = "电气及其自动化";
39             Console.WriteLine("age={0}
banji={1}
name={2}
xuehao={3}
", s1.age,s1.banji,s1.name,s1.xuehao);
40             Console.WriteLine("age={0}
banji={1}
name={2}
xuehao={3}
", s2.age, s2.banji, s2.name, s2.xuehao);
41 
42             //证明s1,s2没有储存在一起,所以s1的值没有受到影响。
43             Console.WriteLine("age={0}
banji={1}
name={2}
xuehao={3}
", s1.age, s1.banji, s1.name, s1.xuehao);
44             //这里没有给s3赋值,但是可以输出,因为我们定义了堆空间
45             Console.WriteLine("age={0}
banji={1}
name={2}
xuehao={3}
", s3.age, s3.banji, s3.name, s3.xuehao);
46 
47             //这里会报错,因为我们只是在栈里面定义了s4,堆空间里什么都没有,所以会报错
48             //Console.WriteLine("age={0}
banji={1}
name={2}
xuehao={3}", s4.age, s4.banji, s4.name, s4.xuehao);
49 
50         }
51     }
52 }
悟已往之不谏,知来者之可追
原文地址:https://www.cnblogs.com/ljh-study/p/13618324.html