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。