我的庫有一些方法,它的返回值不應該被丟棄。作者,即使對我來說,泄漏它們也是一個非常流行的錯誤。所以我希望編譯器在程序員提醒時提醒。確保方法返回值不會丟棄用於庫
這樣的值可以被存儲或用作另一種方法的參數。這不是嚴格使用存儲的值,但如果簡單地丟棄它是100%的錯誤。
是否有任何簡單的設置方式來爲我的圖書館用戶強制執行此操作?
var x = instance.Method(); // ok
field = instance.Method(); // ok
instance.OtherMethod(instance.Method()); // ok
MyMethod(instance.Method()); // ok, no need to check inside MyMethod
instance.Method(); // callvirt and pop - error!
我想過讓IL分析儀,用於生成後事件,但感覺像這樣過於複雜...
你想達到什麼目標? var x = instance.Method();'比'instance.Method();'更好,在變量'x'在賦值之後永遠不會被讀取的場景中嗎?如何通過反射來調用方法,並忽略返回值? – dasblinkenlight
@dasblinkenlight 1)目標是防止難以調試的錯誤。 2)這不是關於安全性,反射是好的 – Vlad
我強迫自己一次通過使用out參數來處理這種情況。不漂亮,但有效。 – Stefan