作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
阅读 this ,我了解到可以通过使方法成为通用方法来允许方法接受多种类型的参数。在示例中,以下代码与类型约束一起使用以确保“U”是一个 IEnumerable<T>
。 .
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
我发现了更多允许添加多个类型约束的代码,例如:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
但是,此代码似乎强制执行 arg
必须都是 ParentClass
的类型和 ChildClass
.我想做的是说 arg 可以是 ParentClass
的一种类型或 ChildClass
通过以下方式:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
一如既往地感谢您的帮助!
最佳答案
那是不可能的。但是,您可以为特定类型定义重载:
public void test(string a, string arg);
public void test(string a, Exception arg);
如果它们是泛型类的一部分,它们将优先于方法的泛型版本。
关于c# - 泛型方法多重 (OR) 类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833918/
我是一名优秀的程序员,十分优秀!