考慮以下代碼:public unsafe struct MyStruct{ public fixed int Nums[128];}private static void DoSomething(){ MyStruct s = new MyStruct(); unsafe { int val = s.Nums[23]; Console.WriteLine(val.ToString()); //Is this guaranteed to be "0"? }}在這種情況下,是否可以保證在MyStruct創(chuàng)建新的時(shí)Nums,每個(gè)索引處的值都會(huì)為 0?在我自己的測(cè)試中,它似乎確實(shí)被初始化為默認(rèn)值,但我問(wèn)是因?yàn)樗莡nsafe.
1 回答
MYYA
TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
啊,好吧,這花了一些時(shí)間才找到,
從18.7 固定大小緩沖區(qū)開始并繼續(xù)
有幾個(gè)參考,最值得注意的是
固定大小的緩沖區(qū)不受明確賦值檢查(第 5.3 節(jié))的約束,并且為了對(duì) struct 類型變量進(jìn)行明確賦值檢查,將忽略固定大小的緩沖區(qū)成員。當(dāng)固定大小緩沖區(qū)成員的最外層包含結(jié)構(gòu)變量是靜態(tài)變量、類實(shí)例的實(shí)例變量或數(shù)組元素時(shí),固定大小緩沖區(qū)的元素會(huì)自動(dòng)初始化為其默認(rèn)值(第 5.2 節(jié))。在所有其他情況下,固定大小緩沖區(qū)的初始內(nèi)容是未定義的。
現(xiàn)在,我自己還沒(méi)有測(cè)試過(guò),這些規(guī)范的語(yǔ)言有時(shí)很難完全理解。但是,這似乎與您的發(fā)現(xiàn)一致
- 1 回答
- 0 關(guān)注
- 230 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
