我创建了以下类:
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);
答案 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
});