将var设置为for循环

时间:2015-06-12 09:07:46

标签: c# .net for-loop var

很难解释,但我会在我的代码中展示我想要的一个例子: 目前我这样做:

var something1 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
var something2 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
var something3 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);

something1.Name = "sheet1";
something2.Name = "sheet2";
something3.Name = "sheet3";

我想在for-loop中制作那些var 这是我认为的应该是:

for (int i=1;i<4;i++)
{
   var ("something" +i) = new Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet); // this (of course) doenst work
}

关于如何做到这一点的任何想法?

我尝试了这个,但它没有工作:

var something = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1 , XlSheetType.xlWorksheet)[4];

4 个答案:

答案 0 :(得分:7)

你可以使用字典

var somethigs = new Dictionary<int, xxx.ApplicationClass>();
for (var i = 1; i < 4; i++)
{
    somethigs[i] = new xxx.ApplicationClass();
}

//access them like this

somethigs[1].Name = "sheet1";
somethigs[2].Name = "sheet2";

或使用像这样的数组

var somethigs = new xxx.ApplicationClass[4];
for (var i = 0; i < 4; i++)
{
    somethigs[i] = new xxx.ApplicationClass();
}

somethigs[0].Name = "sheet1";
somethigs[1].Name = "sheet2";

请记住,数组的索引为零。

答案 1 :(得分:3)

如果您确切知道,您需要的实例数量,创建数组或类实例列表将完成您的工作。

如果你想要更复杂的东西,你也可以创建一个字典,在其中为每个类实例提供名称,这可以为你提供按名称排序的东西机制。

答案 2 :(得分:1)

    <add name="worktimedbEntities" connectionString="metadata=res://*/Models.TimeModel.csdl|res://*/Models.TimeModel.ssdl|res://*/Models.TimeModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;Driver={MySQL ODBC 5.1 Driver};Server=some.server.address;Database=db_time;
User=nick;Password=i51948273;&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

答案 3 :(得分:1)

你应该使用一个数组。在您的特定情况下,

var something = new xxx.ApplicationClass[4];
for (int i = 0; i < 3; i++)
{
    something[i] = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
    something[i].Name = "sheet" + (i + 1).ToString();
}

您应该查找有关它们如何工作的阵列的更多信息。请参阅示例https://msdn.microsoft.com/en-us/library/aa288453%28v=vs.71%29.aspx