带有修饰符和方法
using System;using System.Text;struct Books{private string title;private string author;private string subject;private int book_id;public void setValues(string t, string a, string s, int id){title = t;author = a;subject = s;book_id =id;}public void display(){Console.WriteLine("Title : {0}", title);Console.WriteLine("Author : {0}", author);Console.WriteLine("Subject : {0}", subject);Console.WriteLine("Book_id :{0}", book_id);}};public class testStructure{public static void Main(string[] args){Books Book1 = new Books(); /* 声明 Book1,类型为 Books */Books Book2 = new Books(); /* 声明 Book2,类型为 Books *//* book 1 详述 */Book1.setValues("C Programming","Nuha Ali", "C Programming Tutorial",6495407);/* book 2 详述 */Book2.setValues("Telecom Billing","Zara Ali", "Telecom Billing Tutorial", 6495700);/* 打印 Book1 信息 */Book1.display();/* 打印 Book2 信息 */Book2.display();Console.ReadKey();}}
类和结构的不同
- 类是引用类型,结构是值类型。
- 结构不支持继承。
- 结构不能声明默认的构造函数。
值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放,例如在一个方法中声明Char型的变量name=’C’,当实例化它的方法结束时,name变量在栈上占用的内存就会自动释放
C#的所有值类型均隐式派生自System.ValueType。
结构体:struct(直接派生于System.ValueType)
引用类型包括:数组,用户定义的类、接口、委托,object,字符串,null类型,类。
引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被CLR中的垃圾回收机制释放。
