C# 是否有同时包含以下两种类型:列表<;T>;还有HashSet<;T>;?
我有两个显示的方法:一个是项目列表,另一个是项目集。方法相同。有没有一种方法可以编写参数类型的方法,这样无论传递给方法的参数类型是什么,我都可以使用相同的方法:C# 是否有同时包含以下两种类型:列表<;T>;还有HashSet<;T>;?,c#,.net,list,hashset,C#,.net,List,Hashset,我有两个显示的方法:一个是项目列表,另一个是项目集。方法相同。有没有一种方法可以编写参数类型的方法,这样无论传递给方法的参数类型是什么,我都可以使用相同的方法:List或HashSet 这些方法是: public static void DisplayList<T>(List<T> list) { int i = 0; foreach (T item in list) { Consol
List
或HashSet
这些方法是:
public static void DisplayList<T>(List<T> list)
{
int i = 0;
foreach (T item in list)
{
Console.Write(item.ToString());
if (i < list.Count - 1)
{
Console.Write(", ");
}
i++;
}
Console.WriteLine();
}
public static void DisplayHashSet<T>(HashSet<T> set)
{
int i = 0;
foreach (T item in set)
{
Console.Write(item.ToString());
if (i < set.Count - 1)
{
Console.Write(", ");
}
i++;
}
Console.WriteLine();
}
公共静态无效显示列表(列表)
{
int i=0;
foreach(列表中的T项)
{
Console.Write(item.ToString());
如果(i<列表计数-1)
{
控制台。写(“,”;
}
i++;
}
Console.WriteLine();
}
公共静态void DisplayHashSet(HashSet集)
{
int i=0;
foreach(集合中的T项)
{
Console.Write(item.ToString());
如果(i
您可以使用以下界面:
public static void DisplayHashSet<T>(ICollection<T> col)
{
int i = 0;
foreach (T item in col)
{
Console.Write(item.ToString());
if (i < col.Count - 1)
{
Console.Write(", ");
}
i++;
}
Console.WriteLine();
}
publicstaticvoiddisplayhashset(ICollection列)
{
int i=0;
foreach(列中的T项)
{
Console.Write(item.ToString());
如果(i<列计数-1)
{
控制台。写(“,”;
}
i++;
}
Console.WriteLine();
}
根据和实现的文档,您可以使用这些接口中的任何一个,因为它们具有Count
属性
由于您没有修改集合,只是显示它,IReadOnlyCollection
在这里看起来更好
publicstaticvoiddisplaycollection集合(IReadOnlyCollection集合)
{
int i=0;
foreach(集合中的T项)
{
Console.Write(item.ToString());
如果(i
然而,若您只需要集合的字符串表示,那个么带有重载接受IEnumerable
的方法允许您在一行中完成这项工作
var list=newlist(){1,2,3,4};
var display=string.Join(“,”列表);
控制台写入线(显示);
上面的代码将打印
1,2,3,4
,这与上面的DisplayCollection
方法相同IEnumerable没有计数,您需要使用系统。Linq获取IEnumerable计数enumerable.Count()
ICollection
如果使用i!=0
若要在项目前添加逗号,您不需要计数
,并且可以灵活地接受IEnumerable
)非常感谢你!1.我没有提到我使用VisualStudio2010,因此我可能不知道IReadOnlyCollection类型。2.displayString是一个我没有想到的好主意。@user2102327IReadOnlyCollection
是在.NET 4.5中添加的,它与您的Visual Studio版本无关,它是关于您应用程序的目标框架。您可以使用.NET 2.0中添加的ICollection
<代码>字符串.Join可从.NET 1.1 afaik获得