List不会添加字符串数组

时间:2013-10-23 09:01:24

标签: c#

我创建了以下类:

class TrdRamValue
    {
        double Value = 0.0;
        TrdState State = TrdState.Ok;
        DateTime dt = DateTime.UtcNow;
    }

然后我创建了一个包含此类的列表来存储信息:

List<TrdRamValue> DMSrows = new List<TrdRamValue> ();

我在Handler中使用以下内容来不断地每秒插入值:

string[] value = new string[3];
value[0] = val;
value[1] = val.Error.ToString ();
value[2] = val.Time.ToString ();
DMSrows.AddRange (value);

但是在代码中它一直说我的参数有错误,我无法将string []转换为System.Collections.Generic.IEnumerable。

我完全迷失在这一个......

解答: 这只是我的一个小错误,我也提出了huMpty duMpty建议,因为他完全正确,我不需要那个字符串数组。

我所要做的就是将公共类和变量放在公共区域中,以便完成huMpty duMpty告诉我的事情。

public class TrdRamValue
    {
        public double Value = 0.0;
        public TrdState State = TrdState.Ok;
        public DateTime dt = DateTime.UtcNow;
    }

然后应用huMpty duMpty建议:

TrdRamValue value = new TrdRamValue() ;
value.Value = val;
if (!val.Error) {
    value.State = TrdState.Ok;
}
else if (val.Error) value.State = TrdState.Error;
value.dt = val.Time;
DMSrows.Add (value);

3 个答案:

答案 0 :(得分:4)

您的List不是List<string>,而是List<TrdRamValue>。因此,您无法将字符串添加到列表中。您只能添加TrdRamValue的实例,或者在AddRange的情况下,添加IEnumerable的{​​{1}}(例如数组)。

所以你可以这样做:

TrdRamValue

(btw命名变量TrdRamValue toAdd = new TrdRamValue { Value = val, State = ..., dt = ... }; dmsRows.Add(toAdd); 不符合.net命名约定。)

答案 1 :(得分:3)

您正在尝试将字符串添加到TrdRamValue对象列表中。您的列表是类型安全的,这意味着您只能向其添加TrdRamValue个对象。

答案 2 :(得分:2)

不知道为什么你需要字符串数组。

此处您不需要List.AddRange,因为您添加了一个项目。您可以使用List.Add

   DMSrows.Add(new TrdRamValue{
           Value =val,
           State =val.Error,
           dt =val.Time
     });