解决方案 »
- list泛型和类数组的问题
- RunInUIThreaD,谁用过
- c#调用outlook给多人发送邮件的问题
- 用reportViewer显示Dataset数据怎麽办?
- override与new
- 如何用窗体的Load执行如ngen C:\mRelease\myinfoapp.exe的Vs2008的Dos命令呢?
- winform的datagrid中修改某个单元格中的值后点回车,怎么写回车事件??解决揭贴~在线~~
- 用vs2005可以编写net framework 1.1环境的程序吗
- 请教各位高手:在DataList控件显示一篇文章信息的一部分请问怎样截取!送高分!急!急!!急!!!急!!!
- 有没有可能获取种子内部文件的hash值?
- 怎么列出一个对象中所有的属性和属性的值?
- 批量删除数据库表中数据
{
....
}
看样子好象对,偶也概念不强了.
public enum MyEnum{Zero, One, Two, Three };public void foo<T>(T value) where T : int
{
Console.WriteLine("It is {0}", value);
}public void MyMethod()
{
foo<MyEnum>(MyEnum.One);
}
这样会正确显示 It is One. 吗? 怎么感觉这么怪呢?
I tried in both way. Neither works. Anyone know how to work with it? Simpler, better.
public void Operation<T>() where T : struct
{
....
}泛型约束 class 表示引用类型 struct 表示值类型
用struct先,再加个判断
public void Operation<T>() where T : struct
{
if(!typeof(T).IsEnum) throw new ArgumentException("必须是枚举类型");
}
public enum MyEnum { Zero, One, Two, Three };public void MyMethod()
{
foo<MyEnum>(MyEnum.One);
}public void foo<T>(T value)
{
Type enumType = typeof(T); if (enumType.BaseType != typeof(Enum))
throw new ArgumentException("T must be of type System.Enum"); Console.WriteLine((T)Enum.Parse(enumType, value.ToString()));
Console.WriteLine();
}
got it. but Can I use: ?
switch ((T)value)
{
case enumType.0:
....
break;
case enumType.1:
....
break;
....
default:
break;
}
Or similar
{
if (!typeof(T).IsEnum)
{
}
}
http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum