可以说我得到了对枚举执行某些操作然后返回它的扩展。
public static T Do<T>(this Enum e) where T : struct
{
// Do something.
return // e? .. (T)e? .. or (T)(object)e? ;
}
那么我应该返回什么来让我的代码成功构建并使用这个示例运行:
Roles role = Roles.Admin | Roles.Moderator;
role.Do<Roles>().SomethingElse().AndMore<Roles>().Etc<int>();
__
return (T)e;
http://pasteboard.s3.amazonaws.com/images/1349685696025173.png
__
return e;
http://pasteboard.s3.amazonaws.com/images/1349685753912110.png
__
return (T)(object)e;
实际上有效,但先装箱然后拆箱。