結構體
- 值型別,可裝/拆箱
- 可實作介面,不能派生自類/結構體(不能有基類,不能有基結構體)
- 不能有顯式無參構造器
struct Student{
public int ID {get;set;}
public string Name {get;set;}
}
//stu1是一個區域變數,分配在main函式的記憶體堆疊上,存的是Student型別的實體
Student stu1 = new Student(){
ID = 101,
Name = "Timtohy"
};
//裝箱
object obj = stu1; //將stu1實體copy丟到記憶體“堆”里去,用obj這個變數來參考堆記憶體中的stu1實體
//拆箱
Student student2 = (Student)obj;
Console.WriteLine($"#{student2.ID} Name:{student2.Name}");//#101 Name:Timtohy
值型別與參考型別copy時不同
Student stu1 = new Student(){ID = 101,Name = "Timothy"};
Student stu2 = stu1;
stu2.ID = 1001;
stu2.Name = "Michael";
Console.WriteLine($"#{stu1.ID} Name:{stu1.Name}");//#101 Name:Timothy
Console.WriteLine($"#{stu2.ID} Name:{stu1.Name}");//#1001 Name:Michael
stu2和stu1是兩個物件
結構體可以實作介面
interface ISpeak{
void Speak();
}
struct Student:ISpeak{
public int ID {get;set;}
public string Name {get;set;}
public void Speak(){
Console.WriteLine($"I'm #{this.ID} student{this.Name}");
}
}
結構體不能有基結構體
結構體不能有顯示無參構造器
struct Student{
public Student(){}//這樣是錯誤的
public Student(int id,string name){
this.ID = id;
this.Name = name;
}//正確
public int ID {get;set;}
public string Name {get;set;}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/285382.html
標籤:.NET技术
上一篇:C#基礎_學習筆記--抽象類
下一篇:C#基礎_學習筆記--列舉
