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}\nbanji={1}\nname={2}\nxuehao={3}\n", s1.age,s1.banji,s1.name,s1.xuehao); 40 Console.WriteLine("age={0}\nbanji={1}\nname={2}\nxuehao={3}\n", s2.age, s2.banji, s2.name, s2.xuehao); 41 42 //证明s1,s2没有储存在一起,所以s1的值没有受到影响。 43 Console.WriteLine("age={0}\nbanji={1}\nname={2}\nxuehao={3}\n", s1.age, s1.banji, s1.name, s1.xuehao); 44 //这里没有给s3赋值,但是可以输出,因为我们定义了堆空间 45 Console.WriteLine("age={0}\nbanji={1}\nname={2}\nxuehao={3}\n", s3.age, s3.banji, s3.name, s3.xuehao); 46 47 //这里会报错,因为我们只是在栈里面定义了s4,堆空间里什么都没有,所以会报错 48 //Console.WriteLine("age={0}\nbanji={1}\nname={2}\nxuehao={3}", s4.age, s4.banji, s4.name, s4.xuehao); 49 50 } 51 } 52 }