gpt4 book ai didi

c# - 泛型方法多重 (OR) 类型约束

转载 作者:IT王子 更新时间:2023-10-29 03:34:20 24 4
gpt4 key购买 nike

阅读 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com