有没有办法让C#不抱怨实际上没有初始化的未初始化变量?
我正在开发一个库,用于从SQLServer存储过程检索的数据初始化普通的旧数据对象。其方法之一是以下方法:有没有办法让C#不抱怨实际上没有初始化的未初始化变量?,c#,closures,C#,Closures,我正在开发一个库,用于从SQLServer存储过程检索的数据初始化普通的旧数据对象。其方法之一是以下方法: 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&
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;
}
必须在委托之后运行
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 details=null;
将其初始化为空值是一种方法:
List<U> details = null;
List details=null;
然后,您可以在需要使用时为其分配正确的数据。@Andrey:传统的ORM注重完整性,因此,会创建大量元数据溢出的大型对象和类层次结构。相反,我的图书馆注重效率。例如,我的库可以处理一次返回多个行集的存储过程,这会在请求具有多个详细级别的实体时减少服务器跳闸。有非常不同的ORM具有不同的详细级别。我很确定有一个类似于您的解决方案。是否有任何解决方案比仅将其分配给null更容易/更快/更简单?