我的问题的根源是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/

10-11 03:11