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