JetBrains Rider 2025.2 Help

代码检查:不要对 'using' 变量使用对象初始化器

使用对象初始化器初始化 示意图 变量可能会出现问题,如果在初始化期间抛出异常。 这是可能的,因为编译器在执行进入 示意图 子句之前创建并初始化了对象。 如果在初始化期间抛出异常,程序将永远不会进入 示意图 子句,并且对象不会被释放。

JetBrains Rider 会报告此类情况,并建议将初始化转换为简单赋值,并将属性的初始化移到 示意图 块中:

class MyDisposable : IDisposable { public int Prop { get => throw new(); set => throw new(); } public void Dispose() { // TODO release managed resources here } } class Test { public Test() { using (var x = new MyDisposable { Prop = 1 }) { Console.WriteLine(x); } } }
class MyDisposable : IDisposable { public int Prop { get => throw new(); set => throw new(); } public void Dispose() { // TODO release managed resources here } } class Test { public Test() { using (var x = new MyDisposable()) { x.Prop = 1; Console.WriteLine(x); } } }

在上述示例中,JetBrains Rider 可以访问对象类 MyDisposable 的来源,并检查其任何属性是否确实抛出异常。 如果没有,问题将不会被报告。 但是,如果您以这种方式初始化任何库类,JetBrains Rider 将假定可能会发生异常并发出警告。

最后修改日期: 2025年 9月 26日