我正在开发一个库,它从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;
}
Run Code Online (Sandbox Code Playgroud)
第三个参数Execute是Action<Row>s 的数组.虽然没有静态分析器可以通过编程方式证明它,但由于Execute方法编程的方式,没有代理可以在数组之前的代理之前运行.这意味着代表
delegate(Row row) { details.Add(row.ToObject<U>()); } // use
Run Code Online (Sandbox Code Playgroud)
必须在代表之后运行
delegate(Row row) { details = headerBox.Value.Details; } // initialize
Run Code Online (Sandbox Code Playgroud)
因此,变量details必须在使用之前进行初始化.
但C#仍然抱怨:"使用未分配的变量'细节'."
有没有办法让C#不抱怨实际上没有的未初始化变量?
我开始认为C#不适合我.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |