有什么方法可以使C#不用抱怨实际上未初始化的未初始化变量?

问题描述

| 我正在开发一个库,用于从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>
s的数组。尽管没有静态分析器可以通过编程方式证明这一点,但是由于
Execute
方法的编程方式,因此无法在数组之前的委托程序之前运行任何委托。这意味着代表
delegate(Row row) { details.Add(row.ToObject<U>()); } // use
必须在代表之后运行
delegate(Row row) { details = headerBox.Value.Details; } // initialize
因此,变量
details
必须在使用之前初始化。 但是C#仍然抱怨:\“使用未分配的变量\'details \'。\” 有什么方法可以使C#不用抱怨实际上不是的未初始化变量? 我开始认为C#不适合我。     

解决方法

这是通常的解决方法:
List<U> details = null;
    ,将其初始化为空值是一种处理方法:
List<U> details = null;
然后,您可以在需要使用数据时为其分配正确的数据。