精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:新聞中心行業動態 → 正文

微軟在C# 8中引入預覽版可空引用類型

責任編輯:editor004 作者:Abel Avram |來源:企業網D1Net  2017-11-20 11:20:53 本文摘自:INFOQ

微軟已經為開發者提供了預覽版的可空引用類型(Nullable Reference Type),想嘗鮮的開發者可以嘗試這個新特性,并提供反饋。

預覽版可空引用類型是Visual Studio 2017 15.5 Preview 4+的Roslyn擴展,現在支持.NET框架,很快也將支持.NET Core。該特性在C# 8中是默認啟用的。微軟為此提供了安裝指南。

在C# 8中引入新的可空引用類型是為了解決十億美元問題(Billion Dollar Mistake)。1965年,英國計算機科學家Tony Hoare在開發ALGOL時稱其為空引用(Null Reference)。指針最主要的問題是,有時候它們會為空,而這并非我們所期望的。在將空指針作為一種特性引入之后,反而變成產生bug的主要源頭。

早在2011年,用戶就在Visual Studio User Voice里要求“在C#中引入不可空引用類型”,一年之后,經過投票,該需求排到了第15位,現在已經跑到了第一的位置上。這個特性之所以在很長一段時間內都無法實現,是因為C#的空引用到處可見。C#首席設計師Mads Torgersen解釋說:

問題是空引用太有用了。在C#里,引用類型默認就是空值。還能用其他什么值來作為默認值嗎?在你知道該給一個變量賦什么值之前,拿什么作為它的默認值?一個新創建的引用數組又該使用怎樣的默認值?

有時候,空值本身也是有意義的。比如,有時候需要讓一個字段不包含任何值,或者將空值作為參數進行傳遞也是沒有問題的。但這些情況并不常見。這里還有另一個問題:像C#這樣的語言并沒有提供一種方式可以用于說明某處的空值是有意義的還是無意義的。

為了避免在C#中引入不可空引用類型,微軟將引用類型規定為默認不可空,并提供了一些機制用于處理可空類型。他們認為,大部分情況下引用類型都是非空或被間接引用的。Torgersen寫道:

我們相信,大部分情況下引用類型都不應該為空。可空引用類型是很罕見的(盡管很難說具體多罕見),所以需要單獨對它們進行注解。C#已經提供了可空的值類型(value type)。不應該讓你自己或其他人在空值這個問題上有太多負擔,除非你確定需要它們。空值應該是我們需要顯式去指定的。

可空引用類型通過問號來定義,如下所示:

class Person { public string FirstName; // Not null public string? MiddleName; // May be null public string LastName; // Not null}

微軟希望開發者試用這個新特性,并提供反饋。

更多的信息可參考 C# Futures: Nullable Reference Types、C# 8.0 Previewed、A Proposal for Non-Nullable Types in C#。

查看英文原文:Microsoft Previews Nullable Reference Types in C# 8

關鍵字:引用類型預覽版

本文摘自:INFOQ

x 微軟在C# 8中引入預覽版可空引用類型 掃一掃
分享本文到朋友圈
當前位置:新聞中心行業動態 → 正文

微軟在C# 8中引入預覽版可空引用類型

責任編輯:editor004 作者:Abel Avram |來源:企業網D1Net  2017-11-20 11:20:53 本文摘自:INFOQ

微軟已經為開發者提供了預覽版的可空引用類型(Nullable Reference Type),想嘗鮮的開發者可以嘗試這個新特性,并提供反饋。

預覽版可空引用類型是Visual Studio 2017 15.5 Preview 4+的Roslyn擴展,現在支持.NET框架,很快也將支持.NET Core。該特性在C# 8中是默認啟用的。微軟為此提供了安裝指南。

在C# 8中引入新的可空引用類型是為了解決十億美元問題(Billion Dollar Mistake)。1965年,英國計算機科學家Tony Hoare在開發ALGOL時稱其為空引用(Null Reference)。指針最主要的問題是,有時候它們會為空,而這并非我們所期望的。在將空指針作為一種特性引入之后,反而變成產生bug的主要源頭。

早在2011年,用戶就在Visual Studio User Voice里要求“在C#中引入不可空引用類型”,一年之后,經過投票,該需求排到了第15位,現在已經跑到了第一的位置上。這個特性之所以在很長一段時間內都無法實現,是因為C#的空引用到處可見。C#首席設計師Mads Torgersen解釋說:

問題是空引用太有用了。在C#里,引用類型默認就是空值。還能用其他什么值來作為默認值嗎?在你知道該給一個變量賦什么值之前,拿什么作為它的默認值?一個新創建的引用數組又該使用怎樣的默認值?

有時候,空值本身也是有意義的。比如,有時候需要讓一個字段不包含任何值,或者將空值作為參數進行傳遞也是沒有問題的。但這些情況并不常見。這里還有另一個問題:像C#這樣的語言并沒有提供一種方式可以用于說明某處的空值是有意義的還是無意義的。

為了避免在C#中引入不可空引用類型,微軟將引用類型規定為默認不可空,并提供了一些機制用于處理可空類型。他們認為,大部分情況下引用類型都是非空或被間接引用的。Torgersen寫道:

我們相信,大部分情況下引用類型都不應該為空。可空引用類型是很罕見的(盡管很難說具體多罕見),所以需要單獨對它們進行注解。C#已經提供了可空的值類型(value type)。不應該讓你自己或其他人在空值這個問題上有太多負擔,除非你確定需要它們。空值應該是我們需要顯式去指定的。

可空引用類型通過問號來定義,如下所示:

class Person { public string FirstName; // Not null public string? MiddleName; // May be null public string LastName; // Not null}

微軟希望開發者試用這個新特性,并提供反饋。

更多的信息可參考 C# Futures: Nullable Reference Types、C# 8.0 Previewed、A Proposal for Non-Nullable Types in C#。

查看英文原文:Microsoft Previews Nullable Reference Types in C# 8

關鍵字:引用類型預覽版

本文摘自:INFOQ

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 磴口县| 灵山县| 水富县| 偏关县| 高清| 体育| 饶阳县| 邮箱| 休宁县| 延庆县| 拜泉县| 沙湾县| 丰镇市| 潞城市| 长武县| 乐业县| 抚州市| 涟源市| 广水市| 仙居县| 张家川| 绿春县| 东港市| 沾益县| 新密市| 平潭县| 武乡县| 仁怀市| 涞源县| 富民县| 法库县| 平乐县| 永善县| 奉新县| 永城市| 铁力市| 延长县| 德庆县| 华安县| 青河县| 长葛市|