在C#中将数组元素转换为连接字符串为double

时间:2015-01-25 08:47:22

标签: c#

我是(非常)新的C#;我确信这里的解决方案很简单,但我无法理解。

假设星期五有一个简单的温度阵列。我从某处收到了日期和小时(整数)的缩写,我想用它来打印数组中的元素:

using System;

public class Program
{
    public static void Main()
    {
        double[] Friday = {54.5, 61.0, 63.5, 58.0};
        string Today = "Fri";
        int Hour = 1;
        double parsed = Convert.ToDouble(Today + "day[" + int + "]");
        Console.WriteLine(parsed);
    }
}

鉴于这些条件,我该如何输出61.0?然后,最终结果应该等同于Console.WriteLine(Friday [1]);

2 个答案:

答案 0 :(得分:1)

c#使用零相对索引。这意味着数组中的第一个元素的索引为零。所以你很可能意味着Friday[0]

c#在所有对象上也有ToString方法。这将返回对象的“人类可读”表示。所以你可以做到

 Console.WriteLine(Friday[0].ToString());

此外,WriteLine会自动将传递给它的任何对象转换为其字符串表示形式。所以这也可行

 Console.WriteLine(Friday[0]);

如果您想要文本和值,请使用格式字符串,如

 Console.WriteLine("Friday {0}", Friday[0]);

有关格式字符串的详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx

答案 1 :(得分:1)

如果我真的想要实现这一点,我会使用字典:

Dictionary<string, double[]> dayToValues =
  new Dictionary<string, double[]>
  {
    {"Monday", new double[] {1.0, 2.0, 3.0} },
    {"Friday", new double[] {4.0, 5.0, 6.0} }
  };

string today = "Fri";
int hour = 0;
double firstHourValue = dayToValues[today + "day"][hour];
Console.WriteLine(firstHourValue); // prints "4"

如果您确实需要动态构建变量的名称并访问它,则必须使用反射。类似的东西:

string fieldName = today.ToLower() + "day";
double[] todays = GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) as double[];
Console.WriteLine(todays[1]);  // prints "8"

这假设您在当前类中拥有私有字段:

double[] friday = { 7.0, 8.0, 9.0 };

当然,反射代码取决于变量的确切位置和范围。显而易见,您需要一些空引用检查才能在现实世界中使用它。无论如何,使用反射看起来似乎与您的需求无关。只有在你真的需要时才使用它。