C#如何限定泛型类型T一定是一个枚举类型?
写成这样总是要报编译错误where T : Enum
我不知道如何限定一个类型必须是枚举类型了。请各位指点。
where T : ValueType 这样也还是不行
但是Enum的基类就是ValueType 请各位指点
我就是要实现一个自字符串转换为任意枚举值的一个自定义方法 我本身是这样写的:
public static T ConvertFromString<T>(string strValue) where T : Enum { T t = default(T); return Enum.TryParse(strValue, true, out t) ? t : default(T); }
因为我希望能在这里对其输入的值进行限制,如果输入的不是枚举类型那么编译的时候就会报错而不是运行的时候才报错 我要的效果就是这样 但是不知道该如何实现了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
但是这个是struct 编译 的时候如果任意传入另一个struct的也是可以的了 但是我需要的是限定是Enum而不是其他
这同样限制了必须实现IConvertible接口,所以基本就是Enum了。或者是用户同样实现了这个接口的Enum Clone
总的来说 还是没能达到限定Enum的子类的效果啊
你可以参考这个答案:http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum 下面有个用MSIL克服C#局限的办法,但我觉得没必要,而且MS这么设计自然有它的原因
where T
:
struct
,
IConvertible