1.引言:
在咱們以前的文章中,介紹了類及面象對象的基本概念,那咱們也知道了類是引用類型,是保存在託管堆中的。經過必定義類,咱們能夠在數據的生存期上獲得很高的靈活性,可是也會讓程序的性能有必定的損失。雖然這種損失很小,但當咱們只須要定義一個很小的結構時,用類來定義就有些浪費,對於這樣的問題,C#有相對應的方案來解決,那就是今天咱們要學習的-結構(struct)。
2.概念:
在以前咱們最開始學數據類型的時候,就提到過結構(struct)是一種值類型。也就是說,結構實例是分配在線程堆棧上的,結構自己是包含有值的,而不是像類同樣的引用類型,包含的是所指到堆當中的引用(指針)。也就是說,結構的生存週期與簡單類型(int,double等)相同的。因此說咱們在定義較小的類時,能夠儘可能使用結構。
3.與類的區別:
(1)結構是值類型,不是引用類型。
(2)結構能夠繼續接口,可是不能夠繼承類或結構。
(3)結構的構造方法的工做方式有所不一樣,只能聲明帶參數的構造方法,且不能聲明析構方法。
(4)能夠指定字段如何在內存中佈局。
4.何時使用(struct)結構:
雖然咱們能夠用(class)類徹底代替(struct)結構,可是爲了程序的性能的提升,建議你們在如下狀況下使用結構:
建議你們在實現一個用於存儲數據或數據量較小的結構時來使用結構,由於結構是值類型,因此在性能的影響上,是能起到正面做用的。
5.聲明:
struct Users
{
public string UserName;
public string UserSex;
public int UserAge;
/// <summary>
/// Users結構的構造方法
/// </summary>
/// <param name="username"></param>
/// <param name="usersex"></param>
/// <param name="userage"></param>
public Users(string username, string usersex, int userage)
{
this.UserName = username;
this.UserSex = usersex;
this.UserAge = userage;
}
/// <summary>
/// 獲得用戶信息
/// </summary>
public void GetInfo()
{
Console.WriteLine("姓名:{0},性別:{1},年齡:{2}", UserName, UserSex, UserAge);
}
}
6.使用
方法一:
static void Main()
{
Users user;
user.UserName = "張三丰";
user.UserSex = "女";
user.UserAge = 18;
user.GetInfo();
}
方法二:
static void Main()
{
Users user = new Users("張三丰","男",29);
user.GetInfo();
}
關於 struct的內容還有不少在本文中沒有涉及到的,再往深說的話又要扯到值類型與引用類型的內存分配問題了,這樣的問題,在互聯網上有不少朋友寫出了很是棒的文章,你們能夠在博客園,51cto等園子中找到。