第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# dotnet "Require" 和斷言

C# dotnet "Require" 和斷言

C#
RISEBY 2022-07-10 10:08:08
從 Scala 語言開始,我習(xí)慣于在我的代碼中添加require語句。我會將它用于永遠(yuǎn)不應(yīng)該被違反的事情,它是一種健全性檢查,也是代碼中的一種“實時評論”。這是我想要的行為// C#if (!(x > 0)) {  throw new Exception($"x must be positive but was ${x}")}但這很難閱讀,如果函數(shù)頂部有很多它們,那將是一團(tuán)糟。在 Scala 中,我習(xí)慣于這樣做:// Scalarequire(x > 0, s"x must be positive but was ${x}")// or justrequire(x > 0)打字并不費(fèi)力,require(x>0)而且可讀性很強(qiáng)。我發(fā)現(xiàn)這些在 Scala 中開發(fā)時為我節(jié)省了很多時間,輸入它們非常容易,而且通常健全性檢查會很快發(fā)現(xiàn)錯誤。在 C# 中執(zhí)行此操作的公認(rèn)方法是什么?我看到有“代碼合同”,我嘗試使用這些,但它們似乎在 .NET Core 中根本不起作用。
查看完整描述

2 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊

代碼合同

代碼契約允許您在代碼中指定前置條件和后置條件。

Contract.Requires(x != null);

Contract.Requires<ArgumentNullException>(x != null, nameof(x));

對于后置條件:

Contract.Ensures(this.F > 0);

Contract.EnsuresOnThrow<T>(this.F > 0);

還有其他變化。查看代碼合同命名空間。


查看完整回答
反對 回復(fù) 2022-07-10
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗 獲得超8個贊

在方法的開頭看到一長串列表是相對標(biāo)準(zhǔn)的if ... throw,但是有Debug.Assert(用于從發(fā)布版本中刪除的斷言)和Trace.Assert(在發(fā)布版本中保留斷言)方法似乎與 Scalarequire方法非常相似你提到的。

有關(guān)它們?nèi)绾喂ぷ骱筒煌剌d的詳細(xì)信息,請參閱MSDN 上有關(guān)斷言的這篇文章。

在你的情況下,你可以寫

Trace.Assert(x > 0, $"x must be positive but was ${x}");


查看完整回答
反對 回復(fù) 2022-07-10
  • 2 回答
  • 0 關(guān)注
  • 191 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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