gpt4 book ai didi

c# - 带有 Or 的通用类型约束

转载 作者:太空狗 更新时间:2023-10-30 01:09:27 24 4
gpt4 key购买 nike

public T CreateForm<T>() where T: BaseForm, BaseMainForm

我知道上面的意思是 T 是 BaseForm BaseMainForm。但是是否也可以限制 T 必须是 BaseForm BaseMainForm

最佳答案

不,这在 C# 中是不允许的。编译器使用通用约束来确定在 T 上可用的操作在泛型方法中 - 因此允许 表达式不是类型安全的。

如果您需要这个,请考虑添加一个涵盖BaseForm 公共(public)部分的接口(interface)和 BaseMainForm ,并将其应用为通用约束。这样,接口(interface)定义了什么方法的契约CreateForm<T>需要 - 您必须简单地确保您传入的表单实现了接口(interface)。

类似于:

public interface IBaseForm 
{
Foo();
}

class BaseForm : IBaseForm {}
class BaseMainForm : IBaseForm {}

public T CreateForm<T>() where T : IBaseForm

关于c# - 带有 Or 的通用类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730316/

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