同一個枚舉的多枚舉是我們遇到的一個性能問題,所以我們嘗試在代碼中踩踏這些警告。但是我們有一個通用的擴展函數,用於引發生成很多這些警告的空參數異常。它的簽名是這樣的:我可以標記C#函數爲「此函數不枚舉IEnumerable參數」嗎?
public static void VerifyArgumentIsNotNull<T>(this T value, string valueName) where T : class
它所做的就是檢查null,並拋出一個很好的格式化和本地化(無論哪個人的語言是在比賽的時候)例外。
在IEnumerable參數上使用此函數時,它會使代碼分析警告IEnumerable可能發生多次迭代,因爲分析器不知道該函數的作用。
我想在這個函數上加上一些標籤,上面寫着:「是的,這將可枚舉作爲輸入,但它不會迭代它,因此不應該被調用者視爲可能的迭代。有沒有這樣的標籤?我搜索了互聯網無濟於事。
>(如果您還沒有),進入ReSharper的選項,那麼代碼檢查→代碼註釋,並按下此默認實現到剪貼板按鈕 R·8.2能夠自動做到這一點。 – hazzik
@hazzik如何? (我知道,這將導入的註釋,如果我實現INPC,但怎麼回事?) –
一位同事關心究竟這種解決方案會做我們的代碼庫 - 通過添加Annotations.cs,是我們以某種方式使我們的可執行文件在運行時依賴於一些新的DLL?我不太瞭解代碼屬性或jetbrains實現來回答這個問題。 – srm