最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 C# 6 索引初始值設(shè)定項(xiàng)中使用 C# 8 空值寬容運(yùn)算符

在 C# 6 索引初始值設(shè)定項(xiàng)中使用 C# 8 空值寬容運(yùn)算符

PHP
aluckdog 2024-01-20 16:06:22
當(dāng)使用索引初始值設(shè)定項(xiàng)填充字典而不在此之前重新創(chuàng)建它時(shí),是否有一個(gè)選項(xiàng)可以在某處指定 null-forgiving 運(yùn)算符?例子:public class Program{    public IDictionary<string, string>? NullableDictionary { get; set; }       = new Dictionary<string, string>();    public static void Main(string[] args)    {        new Program        {            NullableDictionary =            {                ["key"] = "value"            }        };    }}我知道這個(gè)用例(無(wú)需重新創(chuàng)建new Dictionary<string, string>索引初始化之前{ [...] = ... })可能不是很常見(jiàn)。但我仍然想知道是否有解決方案來(lái)防止上述情況出現(xiàn)編譯器警告:[CS8602] 取消引用可能為空的引用。我可以想象像這樣使用 null-forgiving 運(yùn)算符:new Program{    NullableDictionary! =    {        ["key"] = "value"    }};
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

我仍然想知道是否有解決方案來(lái)防止此編譯器警告


我認(rèn)為你的意思是,除了明顯的#pragma方法之外:


#pragma warning disable 8602

    new Program

    {

        NullableDictionary = { ["key"] = "value" }

    };

#pragma warning restore

這顯然有效?;蛘?,當(dāng)然,上面的“可空引用類(lèi)型”特定版本:


#nullable disable

    new Program

    {

        NullableDictionary = { ["key"] = "value" }

    };

#nullable restore

這兩者都暫時(shí)且明確地禁用相關(guān)警告。空值寬容運(yùn)算符本質(zhì)上就是這樣做的,當(dāng)然除了它所應(yīng)用的特定表達(dá)式之外。


無(wú)論好壞,我認(rèn)為沒(méi)有一種方法可以完全滿(mǎn)足您的要求。通常,僅在實(shí)際變量聲明中才允許使用集合初始值設(shè)定項(xiàng)語(yǔ)法。在對(duì)象初始化語(yǔ)法上下文中使用它是該語(yǔ)言允許的一種特殊情況,基于場(chǎng)景的相似性,即使生成的代碼與實(shí)際的變量初始化非常不同(特別是,您在其中事實(shí)上,在初始化集合的同時(shí)初始化變量的值)。


因此,當(dāng)編譯器處理集合初始值設(shè)定項(xiàng)語(yǔ)法時(shí),編譯器所要做的就是生成對(duì)方法的一堆調(diào)用Add(),并且這些調(diào)用是對(duì)可能為 null 的引用值進(jìn)行的,根據(jù)您之前的聲明。


話(huà)雖如此,我發(fā)現(xiàn)您嘗試在那里使用 null-forgiving 運(yùn)算符非常明智。Add()如果編譯器能夠通過(guò)在其生成的每個(gè)調(diào)用中包含該運(yùn)算符來(lái)解釋該上下文中運(yùn)算符的使用,那就太好了。


您甚至可以針對(duì)該語(yǔ)言提交 Git 問(wèn)題,并要求將其添加為一項(xiàng)功能。我認(rèn)為這不會(huì)是一個(gè)重大變化,因?yàn)樵撜Z(yǔ)法目前完全是非法的,并且當(dāng)您不使用該語(yǔ)法時(shí)允許它不會(huì)改變編譯器的行為。


查看完整回答
反對(duì) 回復(fù) 2024-01-20
  • 1 回答
  • 0 關(guān)注
  • 179 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)