显示列表中的所有字符串
本文关键字:字符串 列表 显示 | 更新日期: 2023-09-27 18:16:25
我正在尝试创建两个集合,并将它们放在一个列表中,并显示列表中的所有项目。我的代码出现错误。错误:System.Collections.Generic.List 1[System.Collections.Generic.SortedSet
1[System.String]]我在下面附上我的代码。感谢您的帮助。
namespace Prog 5
{
class Program
{
static void Main(string[] args)
{
List<SortedSet<string>> items = new List<SortedSet<string>>();
SortedSet<string> set = new SortedSet<string>();
SortedSet<string> set2 = new SortedSet<string>();
set.Add("a");
set.Add("b");
set.Add("d");
set.Add("c");
set2.Add("e");
set2.Add("d");
set2.Add("c");
foreach (string item in set)
{
items.Add(set);
}
foreach (string item in set2)
{
items.Add(set2);
}
DisplayItem(items);
}
public static void DisplaySet(SortedSet<string> set)
{
string set1 = string.Join(",", set);
Console.WriteLine(set1);
Console.ReadLine();
}
public static void DisplayItem(List<SortedSet<string>> items)
{
foreach (SortedSet<string> item in items)
{
Console.WriteLine(items);
Console.ReadLine();
}
}
}
DisplayItem(…(中有Console.WriteLine(items(…,类型为List>。ToString((会自动被调用,生成一个字符串供Console.WriteLine输出:这就是您获得当前消息的原因。我猜您想将的每个项目都写入控制台。
public static void DisplayItem(List<SortedSet<string>> items)
{
foreach (SortedSet<string> item in items)
{
DisplaySet(item);
}
}
SortedSet<string>
继承自Object
,ToString((的默认行为为GetType().ToString();
,因为您可以在控制台中接收System.Collections.Generic.List1[System.Collections.Generic.SortedSet1[System.String]]
参考代码
public virtual String ToString()
{
return GetType().ToString();
}
解决方案:如果你想在控制台中显示SortedSet
的元素,你应该使用这个:
Console.WriteLine(string.Join(",", item.ToArray()));
这将连接SortedSet
中的所有字符串,并在控制台中使用,
分隔符显示它们。
如果我正确理解了您的需求,您希望将2个SortedSet合并到一个列表或集合中。
以下代码应该可以工作(下面解释它为什么工作(:
class Program
{
static void Main(string[] args)
{
SortedSet<string> items = new SortedSet<string>();
SortedSet<string> set = new SortedSet<string>();
SortedSet<string> set2 = new SortedSet<string>();
set.Add("a");
set.Add("b");
set.Add("d");
set.Add("c");
set2.Add("e");
set2.Add("d");
set2.Add("c");
foreach (string item in set)
{
items.Add(item);
}
foreach (string item in set2)
{
items.Add(item);
}
DisplayItem(items);
}
public static void DisplaySet(SortedSet<string> set)
{
string set1 = string.Join(",", set);
Console.WriteLine(set1);
Console.ReadLine();
}
public static void DisplayItem(SortedSet<string> items)
{
foreach (string item in items)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
所列代码中的主要问题是它试图创建OrderedSet<string>
对象的列表。由于每个OrderedSet<string>
代表一个字符串集合,因此需要对这些集合进行迭代,并将字符串放入一个新集合中。有问题的代码并没有做到这一点。相反,它在列表中添加了7个OrderedSet<string>
对象。
更正的代码修复了该问题,并将字符串添加到新的OrderedList<string>
中。您可以根据自己的需求决定它是什么集合。如果您需要集合不包含重复项并进行排序,您可以选择一个新的OrderedSet<string>
,但如果您不关心重复项,则可以选择List<string>
。
如果您想比较OrderedSet<string>
和List<string>
之间的差异,您可以简单地将"items"数据类型更改为List<string>
并运行程序。
电流输出:
a
b
c
d
e
如果您更改
SortedSet<string> items = new SortedSet<string>();
至
List<string> items = new List<string>();
...
public static void DisplayItem(List<string> items)
{
...
你会得到:
a
b
c
d
c
d
e