3 回答

TA貢獻1816條經(jīng)驗 獲得超4個贊
不是不能直接賦值,而是寫法的問題,直接寫 3.14 編譯器會認為這是一個雙精度數(shù)而非decimal,而從double到decimal是不可以隱式轉(zhuǎn)換的,所以會報錯,后面加上了M以后就表示這是告訴編譯器這就是個decimal,所以可以直接賦值。
至于為什么雙精度型(double)到實數(shù)(decimal)不可隱式轉(zhuǎn)換,是因為后者精度更高,但是其數(shù)值表示范圍反倒不如前者大。

TA貢獻1828條經(jīng)驗 獲得超6個贊
有幾種變量在創(chuàng)建時自動初始化為它們的默認值。對于類類型和其他引用類型的變量,此默認值為 null。但是,由于結(jié)構(gòu)是不能為 null 的值類型,結(jié)構(gòu)的默認值是通過將所有值類型字段設(shè)置為它們的默認值,并將所有引用類型字段設(shè)置為 null 而產(chǎn)生的值。如上所述,結(jié)構(gòu)的默認值就是將所有值類型字段設(shè)置為它們的默認值并將所有引用類型字段設(shè)置為 null 而產(chǎn)生的值。由于這個原因,結(jié)構(gòu)不允許它的實例字段聲明中含有變量初始值設(shè)定項。此限制只適用于實例字段。在結(jié)構(gòu)的靜態(tài)字段聲明中可以含有變量初始值設(shè)定項。

TA貢獻1805條經(jīng)驗 獲得超10個贊
1、在結(jié)構(gòu)體定義外,不能直接用a.b = 1;這樣的語句賦值,這是因為C#中結(jié)構(gòu)體成員變量默認私有
2、在定義結(jié)構(gòu)體的代碼中,不能賦初始值,這一點就有點復(fù)雜了,首先要搞清楚為什么類成員變量可以賦初始值,類聲明中的賦值語句會被編譯器自動生成到構(gòu)造函數(shù)中,然而結(jié)構(gòu)體的默認無參構(gòu)造函數(shù)不允許重載,那為什么C#不允許重載結(jié)構(gòu)體的默認無參構(gòu)造函數(shù)呢,你可以參照這個:網(wǎng)頁鏈接
- 3 回答
- 0 關(guān)注
- 2185 瀏覽
添加回答
舉報