這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)C#結(jié)構(gòu)體構(gòu)造函數(shù)的實(shí)例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)建站一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
C#結(jié)構(gòu)體構(gòu)造函數(shù)的應(yīng)用是如何的呢?
C#結(jié)構(gòu)體構(gòu)造函數(shù)的實(shí)例1、
/// ﹤summary﹥ /// 啟動(dòng)服務(wù)端的參數(shù)結(jié)構(gòu) /// ﹤/summary﹥ public struct SERVER_VIDEOINFO { /// ﹤summary﹥ /// 通道數(shù)據(jù)類型,是否支持電話線連接 /// ﹤/summary﹥ byte[] m_datatype; /// ﹤summary﹥ /// 系統(tǒng)的通道個(gè)數(shù) /// ﹤/summary﹥ byte m_channum; /// ﹤summary﹥ /// 超時(shí)等待時(shí)間,1-300,單位:分鐘 /// 用來設(shè)置超時(shí)等待時(shí)間, ///如果m_waittime沒有收到某個(gè)用戶的應(yīng)答信號(hào),切斷和該用戶的連接。 /// ﹤/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#結(jié)構(gòu)體構(gòu)造函數(shù)的實(shí)例2.
/// ﹤summary﹥ /// 啟動(dòng)服務(wù)端的參數(shù)結(jié)構(gòu) /// ﹤/summary﹥ public unsafe struct SERVER_VIDEOINFO { /// ﹤summary﹥ /// 通道數(shù)據(jù)類型,是否支持電話線連接 /// ﹤/summary﹥ fixed byte m_datatype[64]; /// ﹤summary﹥ /// 系統(tǒng)的通道個(gè)數(shù) /// ﹤/summary﹥ byte m_channum; /// ﹤summary﹥ /// 超時(shí)等待時(shí)間,1-300,單位:分鐘 /// 用來設(shè)置超時(shí)等待時(shí)間, ////如果m_waittime沒有收到某個(gè)用戶的應(yīng)答信號(hào),切斷和該用戶的連接。 /// ﹤/summary﹥ uint m_waittime; /// ﹤summary﹥ /// 目前沒有使用 /// ﹤/summary﹥ uint m_bufnum; }; /* 說明:C#中結(jié)構(gòu)都有一個(gè)默認(rèn)的不帶參數(shù)的構(gòu)造函數(shù), 用于對(duì)結(jié)構(gòu)的字段進(jìn)行初始化,并且結(jié)構(gòu)的默認(rèn)構(gòu)造函數(shù)不能被重寫。 結(jié)構(gòu)體之中定義的數(shù)組還可以通過構(gòu)造函數(shù)傳參數(shù)進(jìn)行初始化操作! 1和2的作用相同,但是用2的方式定義的話需要選中 “項(xiàng)目屬性/生成/允許不安全代碼"。 */
C#結(jié)構(gòu)體構(gòu)造函數(shù)的概念來自MSDN的資料:
對(duì)于C#結(jié)構(gòu)體,結(jié)構(gòu)與類共享大多數(shù)相同的語法,但結(jié)構(gòu)比類受到的限制更多:
在結(jié)構(gòu)聲明中,除非字段被聲明為 const 或 static,否則無法初始化。
結(jié)構(gòu)不能聲明默認(rèn)構(gòu)造函數(shù)(沒有參數(shù)的構(gòu)造函數(shù))或析構(gòu)函數(shù)。
由于結(jié)構(gòu)的副本由編譯器自動(dòng)創(chuàng)建和銷毀,因此不需要使用默認(rèn)構(gòu)造函數(shù)和析構(gòu)函數(shù)。實(shí)際上,編譯器通過為所有字段賦予默認(rèn)值(參見默認(rèn)值表(C# 參考))來實(shí)現(xiàn)默認(rèn)構(gòu)造函數(shù)。結(jié)構(gòu)不能從類或其他結(jié)構(gòu)繼承。
結(jié)構(gòu)是值類型。如果從結(jié)構(gòu)創(chuàng)建一個(gè)對(duì)象并將該對(duì)象賦給某個(gè)變量,則該變量包含結(jié)構(gòu)的全部值。復(fù)制包含結(jié)構(gòu)的變量時(shí),將復(fù)制所有數(shù)據(jù),對(duì)新副本所做的任何修改都不會(huì)改變舊副本的數(shù)據(jù)。由于結(jié)構(gòu)不使用引用,因此結(jié)構(gòu)沒有標(biāo)識(shí);無法區(qū)分具有相同數(shù)據(jù)的兩個(gè)值類型實(shí)例。C# 中的所有值類型都繼承自 ValueType,后者繼承自 Object。
C#結(jié)構(gòu)體構(gòu)造函數(shù)的應(yīng)用方面具有以下特點(diǎn):
結(jié)構(gòu)是值類型,而類是引用類型。
與類不同,結(jié)構(gòu)的實(shí)例化可以不使用 new 運(yùn)算符。
結(jié)構(gòu)可以聲明構(gòu)造函數(shù),但它們必須帶參數(shù)。
一個(gè)結(jié)構(gòu)不能從另一個(gè)結(jié)構(gòu)或類繼承,而且不能作為一個(gè)類的基。所有結(jié)構(gòu)都直接繼承自 System.ValueType,后者繼承自 System.Object。
結(jié)構(gòu)可以實(shí)現(xiàn)接口。
結(jié)構(gòu)可用作可為 null 的類型,因而可向其賦 null 值。
上述就是小編為大家分享的C#結(jié)構(gòu)體構(gòu)造函數(shù)的實(shí)例分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。