我想在theme.VersionStamp插入另一個空檢查。有沒有一種方法可以將它插入SequenceEqual參數中?空傳播 - 第二空檢查
if (theme.VersionStamp != null)
{
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
}
我想在theme.VersionStamp插入另一個空檢查。有沒有一種方法可以將它插入SequenceEqual參數中?空傳播 - 第二空檢查
if (theme.VersionStamp != null)
{
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
}
它不是必需的,因爲正確反正你製作的空檢查if (theme.VersionStamp != null){
,然後出發。但是,你仍然可以再次檢查和傳遞的默認參數一樣
if (!origTheme?.VersionStamp.SequenceEqual(theme.VersionStamp ?? new VersionStamp()) ?? false)
另外,我想你的第一個null
檢查延伸到下面
if (theme != null && theme.VersionStamp != null)
{
不幸的是,路過的時候一種說法是添加空校驗不可能。
你可以得到最短的是:
if (theme?.VersionStamp == null ||
!origTheme?.VersionStamp?.SequenceEqual(theme.VersionStamp) ?? false)
{
throw new TwConcurrencyException();
}
我不會傳似拉胡爾的默認參數是幹什麼的,因爲如果origTheme
的VersionStamp
等於默認VersionStamp
SequenceEqual
會錯誤地返回true
使用C#7和[Throw Expressions](https://github.com/dotnet/roslyn/issues/13389)現在可以這樣做:'.SequenceEqual(theme.VersionStamp ?? throw new ArgumentException(...) )但是,在這個**案件中,由於前面的if語句,它是不必要的。 –
_「我想插入另一個空檢查的主題」_ - 爲什麼?當你到達代碼的那一部分時,你已經知道這個值不是'null'。那裏有一個空檢查的重點是什麼?如果有一點,你想要什麼樣的空檢查?你想要什麼結果?解決你的問題,使其包含一個很好的[mcve],清楚地表明你正在做什麼,解釋代碼的作用,以及你想要它做什麼,以及具體是什麼,你無法弄清楚。 –