C# C中方法参数中的泛型T
我喜欢这样做:C# C中方法参数中的泛型T,c#,.net,generics,methods,generic-list,C#,.net,Generics,Methods,Generic List,我喜欢这样做: public static List<string> ItemsOfEnum(T typeT) { List<string> items = new List<string>(); foreach (typeT tItem in Enum.GetValues(typeof(typeT))) items.Add(tItem); return items; } public static List<st
public static List<string> ItemsOfEnum(T typeT)
{
List<string> items = new List<string>();
foreach (typeT tItem in Enum.GetValues(typeof(typeT)))
items.Add(tItem);
return items;
}
public static List<string> ItemsOfEnum<T>(T inputList) {...}
如何在不更改返回类型列表的情况下获取参数列表中的T?我认为您混淆了语法。我猜你想要这样的东西:
public static List<string> ItemsOfEnum(T typeT)
{
List<string> items = new List<string>();
foreach (typeT tItem in Enum.GetValues(typeof(typeT)))
items.Add(tItem);
return items;
}
public static List<string> itemsofenum<typet>()
{ ... }
public static List<string> ItemsOfEnum<T>(T inputList) {...}
在for each语句中,您需要将typeT与T交换。对于内部列表,您可能需要调用toString函数来获取字符串。似乎很容易。。。但也许这就是你想要的
public static List<string> ItemsOfEnum<typeT>()
where typeT: struct, IComparable, IFormattable, IConvertible {
List<string> items = new List<string>();
foreach (typeT tItem in Enum.GetValues(typeof(typeT)))
items.Add(tItem.ToString());
return items;
}
请注意,C不允许约束到枚举,因此这些约束或多或少是您可以得到的结果。Erm,不确定您要问什么。您能澄清一下您的问题吗?您可以使用Enum.GetNames获取字符串[]。我不知道你是否想这样。这里有3个答案,但我仍然不知道问题是什么:我想知道,把“T”放在哪里。我想,我必须把它插在“绳子”后面。但是这已经改变了输出结果,或者更好地说,结果是一个错误。如果typet是一个类型变量,那么它会,这样他就可以对它调用typeof。C是区分大小写的。Public和list不正确。感谢您的宝贵评论。我的观点是,如果您要发布代码示例,至少要让它们成为可以直接使用的东西。为你做了改变,这就解释了。。。不利于C的环境;谢谢你,卢塞罗。这就是重点。我尝试了类似“代码”列表“代码”的东西,但这改变了返回类型。再次感谢你!不客气。如果您只在枚举名称之后,但您可能希望按照Oded的建议直接使用enum.GetNames。