我的问题的根源是C#编译器太聪明了.它可以检测通过该物体可能是不确定的路径,这样的要求,我填满它.在代码中,我看在DataSet中的表,看是否有一个我想要的.如果没有,我会创建一个新的.我知道,dtOut总是被分配一个值,但除非它声明时所分配的值,编译器不开心.这是不优雅的.
如何以更优雅的方式重写它?
System.Data.DataTable dtOut = new System.Data.DataTable();
.
.
// find table with tablename = grp
// if none, create new table
bool bTableFound = false;
foreach (System.Data.DataTable d1 in dsOut.Tables)
{
string d1_name = d1.TableName;
if (d1_name.Equals(grp))
{
dtOut = d1;
bTableFound = true;
break;
}
}
if (!bTableFound) dtOut = RptTable(grp);
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 11
您可以像这样重写您的方法:
System.Data.DataTable dtOut = dsOut
.Tables
.Cast<System.Data.DataTable>()
.FirstOrDefault(t => t.TableName.Equals(grp))
?? RptTable(grp);
Run Code Online (Sandbox Code Playgroud)
ito*_*son 11
初始值可以是null.编译器不要求您创建实例 ; 它只需要你分配一个值.
System.Data.DataTable dtOut = null; // compiler is now happy
// rest of code as before
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |