[英]Showing warning when function result is not assigned to variable
我有一個函數,它返回傳遞給這個函數的對象的修改副本。 我經常做這樣的事情:
obj = obj.Foo(param);
不要問為什么,我只是不得不問。 但有時,我(和其他人)忘記分配返回值,這樣做:
obj.Foo(param);
這會反復導致耗時的調試。
每次未將函數結果分配給變量時,有沒有辦法顯示警告或錯誤? 或有關如何解決此問題的任何其他建議?
您可以使用 out 參數,因此調用將如下所示:
obj.Foo(param, out obj);
您可以使用 Resharper 來協助解決此問題; 你需要用[Pure]
屬性裝飾你的方法:
[Pure]
public static IList<T> RemoveItem<T>(this IEnumerable<T> thisList, T item)
{
var list = thisList.ToList();
list.Remove(item);
return list;
}
然后當你在不分配返回值的情況下調用它時,你會看到:
[Pure]
屬性在 Resharpers Data Annotations 中定義:您需要將類復制到您的項目中,以便您可以引用它們(還有許多非常有用的其他注釋)
您可以啟用 Visual Studio 警告。
您甚至可以自定義要應用的規則。
如果您沒有將函數分配給變量,您應該會看到警告
您也可以決定將警告視為錯誤
例子:
public static class MyClass
{
public static string GetStr()
{
return "";
}
public static void Main()
{
GetStr();
}
}
我無法評論答案,缺少 stackoverflow 積分。 但我同意 Chris 的觀點,即不分配從方法返回的值是完全合法的,而且通常是可取的。 這有時也是不可取的。 例如
public static int Square(this int myValue)
{
return myValue * myValue;
}
很明顯,調用此方法而不分配它可能是一個錯誤。 我認為創建一個代碼分析規則,在每次你沒有像 Massimiliano 建議的那樣分配值時發出警告,這比根本沒有規則更糟糕。 在這種情況下,能夠將屬性應用於方法會很好......
[MustAssign]
public static int Square...
您可以按照 Massimiliano 的建議創建規則,但僅在方法裝飾有屬性且未分配從方法返回的值時才調用警告。 雖然不是一個微不足道的練習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.