我有一个while循环,它将某些值发布到字符串中,还有一个按钮,它应该将值连接到字符串中并显示为消息框。
string toDisplay = string.Join("," , Export.ToString());
MessageBox.Show(toDisplay);
然而,我得到的只是内部列表,而不是值。出口
列表启动器
List<int> Export = new List<int>();
如果Export是int的List,则不在Join中添加ToString((,只保留列表
string toDisplay = string.Join("," , Export);
MessageBox.Show(toDisplay);
如果将ToString((方法添加到Export变量,则要求列表将其自身表示为字符串,但通用List<T>
对此没有任何重写,并使用基础对象类中的底层ToString((。这个方法只输出类名
相反,如果只保留List变量名Export,则使用的Join方法是枚举列表元素(整数(并要求它们一个接一个地给出自己的ToString((表示。整数可以做到这一点。
很高兴知道一些Linq,Aggregate
可以帮助:
var toDisplay = (export?.Any() ?? false) ? // not null and not empty
export.Select(m => m.ToString()).Aggregate((m1, m2) => $"{m1},{m2}") :
string.Empty;
注意:但从内存分配的角度来看,@Steve的回答更有效