Csharp/C#教程:获得处置关闭 – 标记方法是安全的分享


获得处置关闭 – 标记方法是安全的

这是关于ReSharper的警告“进入废弃封闭”,这通常在后来处置的物体用于lambda时出现。 在C#中获得处置关闭? 更详细地讨论了这一点。

我的问题是:对于采用这种lamdbas并立即执行它们的方法(所以你可以确定它们总是在处理掉所述对象之前执行):

有没有办法将它们标记为安全,以便使用该方法的任何代码都不再产生这些警告?

例:

using (var myObject = new MyDisposableObject()) { DoThisTwice(() => myObject.DoSomething()); } ... void DoThisTwice(Action do) { do(); do(); } 

DoThisTwice接受委托(或lambda)并同步执行它。 到方法返回时,将不再执行lambda。 只有这样才能处理myObject ,所以我们很高兴。 我们可以用注释来标记调用DoThisTwice的行,但必须以类似的方式在所有地方使用该方法完成。 相反,我想将DoThisTwice标记为安全,因此Resharper不会为该方法的任何调用者显示任何警告。

您可以使用ReSharper的注释来解决此问题。 ReSharper无法知道闭包将持续多长时间,例如它可能被分配给一个字段,因此它会警告您,您可能正在使用将在调用lambda时处理的内容。

你可以像这样解决它:

 void DoThisTwice([InstantHandle] Action action) { action(); action(); } 

InstantHandle属性告诉ReSharper,该操作立即被调用,而不是存储在方法范围之外。

上述就是C#学习教程:获得处置关闭 – 标记方法是安全的分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/953850.html

(0)
上一篇 2021年11月19日
下一篇 2021年11月19日

精彩推荐