我的问题的根源是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);
最佳答案
该初始值可以是null
。编译器不需要您创建实例。它只需要您分配一个值。
System.Data.DataTable dtOut = null; // compiler is now happy
// rest of code as before
关于c# - 如何避免以优雅的方式创建不需要的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2595921/