您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關C#中如何使用結構體構造函數,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
///〈summary〉 ///啟動服務端的參數結構 ///〈/summary〉 publicstructSERVER_VIDEOINFO { ///〈summary〉 ///通道數據類型,是否支持電話線連接 ///〈/summary〉 byte[]m_datatype; ///〈summary〉 ///系統的通道個數 ///〈/summary〉 bytem_channum; ///〈summary〉 ///超時等待時間,1-300,單位:分鐘 ///用來設置超時等待時間, 如果m_waittime沒有收到某個用戶的應答信號, 切斷和該用戶的連接。 ///〈/summary〉 uintm_waittime; ///〈summary〉 ///目前沒有使用 ///〈/summary〉 uintm_bufnum; publicSERVER_VIDEOINFO(bytechannum, uintwaittime,uintbufnum) { this.m_channum=channum; this.m_waittime=waittime; this.m_bufnum=bufnum; this.m_datatype=newbyte[64]; } }; ///〈summary〉 ///啟動服務端的參數結構 ///〈/summary〉 publicunsafestructSERVER_VIDEOINFO { ///〈summary〉 ///通道數據類型,是否支持電話線連接 ///〈/summary〉 fixedbytem_datatype[64]; ///〈summary〉 ///系統的通道個數 ///〈/summary〉 bytem_channum; ///〈summary〉 ///超時等待時間,1-300,單位:分鐘 ///用來設置超時等待時間, 如果m_waittime沒有收到某個用戶的應答信號, 切斷和該用戶的連接。 ///〈/summary〉 uintm_waittime; ///〈summary〉 ///目前沒有使用 ///〈/summary〉 uintm_bufnum; };
/*
說明:C#中結構都有一個默認的不帶參數的構造函數, 用于對結構的字段進行初始化,并且結構的默認構造函數不能被重寫。
C#結構體構造函數之中定義的數組還可以通過構造函數傳參數進行初始化操作!
1和2的作用相同,但是用2的方式定義的話需要選中 “項目屬性/生成/允許不安全代碼"。
以下是來自MSDN
結構與類共享大多數相同的語法,但結構比類受到的限制更多
在結構聲明中,除非字段被聲明為 const 或 static,否則無法初始化。
結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數。
由于結構的副本由編譯器自動創建和銷毀,因此不需要使用默認構造函數和析構函數。實際上,編譯器通過為所有字段賦予默認值(參見默認值表(C# 參考))來實現默認構造函數。結構不能從類或其他結構繼承。
結構是值類型。如果從結構創建一個對象并將該對象賦給某個變量,則該變量包含結構的全部值。復制包含結構的變量時,將復制所有數據,對新副本所做的任何修改都不會改變舊副本的數據。由于結構不使用引用,因此結構沒有標識;無法區分具有相同數據的兩個值類型實例。C#結構體構造函數 中的所有值類型都繼承自 ValueType,后者繼承自 Object。
結構具有以下特點:
結構是值類型,而類是引用類型。
與類不同,結構的實例化可以不使用 new 運算符。
結構可以聲明構造函數,但它們必須帶參數。
一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自 System.ValueType,后者繼承自 System.Object。
結構可以實現接口。
C#結構體構造函數可用作可為 null 的類型,因而可向其賦 null 值。
以上就是C#中如何使用結構體構造函數,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。