-2

我创建了以下类:

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);
4

3 回答 3

3

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

所以你可以这样做:

TrdRamValue toAdd = new TrdRamValue { Value = val, State = ..., dt = ... };
dmsRows.Add(toAdd);

(顺便说一句,命名变量DMSRows不符合 .net 命名约定)。

于 2013-10-23T09:04:05.317 回答
3

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

于 2013-10-23T09:04:08.910 回答
2

不知道为什么在这里需要字符串数组。

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

   DMSrows.Add(new TrdRamValue{
           Value =val,
           State =val.Error,
           dt =val.Time
     });
于 2013-10-23T09:07:56.383 回答