c# - 有没有办法让 C# 不提示实际上没有未初始化的未初始化变量?

标签 c# closures

我正在开发一个库,它根据从 SQL Server 存储过程检索到的数据初始化普通数据对象。它的方法之一是以下方法:

public static T RetrieveCompound<T, U>(string cmdText, params Parameter[] parameters)
    where T : Header<U>, new()
    where U : class, new() {

    Box<T> headerBox = new Box<T>();
    List<U> details;
    Execute(cmdText, parameters, new Action<Row>[] {
        SetReferenceAction<T>(headerBox) +
        delegate(Row row) { details = headerBox.Value.Details; },
        delegate(Row row) { details.Add(row.ToObject<U>()); }
    });
    return headerBox.Value;
}

Execute的第三个参数是 Action<Row> 的数组秒。尽管没有静态分析器可以通过编程方式证明它,但由于 Execute 的方式方法被编程,任何委托(delegate)都不能在数组中它前面的委托(delegate)之前运行。这意味着代表

delegate(Row row) { details.Add(row.ToObject<U>()); } // use

必须在委托(delegate)之后运行

delegate(Row row) { details = headerBox.Value.Details; } // initialize

因此,变量 details必须在使用前进行初始化。

但 C# 仍然提示:“使用未分配的变量‘细节’。”

有没有办法让 C# 不提示实际上没有的未初始化变量?


我开始觉得 C# 不适合我。

最佳答案

这是通常的解决方法:

List<U> details = null;

关于c# - 有没有办法让 C# 不提示实际上没有未初始化的未初始化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117114/

相关文章:

javascript - 如何在闭包中卡住函数的变量?

JavaScript 执行上下文,鼠标处理程序内反直觉的作用域链

c# - 不同命名空间中的类

C# 泛型委托(delegate)的异步调用

c# - 将查询参数从强类型 View 传递回 Controller

c# - Postsharp:它是如何工作的?

python - python 闭包什么时候进行捕获?

javascript - 在 TypeScript 中引用推断类型

C# WPF 应用程序 .NET 4.5 设置鼠标位置

php - Symfony2 - 如何使用 Symfony\Component\DependencyInjection\Loader\ClosureLoader 导入参数?