gpt4 book ai didi

c# - 方法和约束的唯一性

转载 作者:太空狗 更新时间:2023-10-29 22:55:40 24 4
gpt4 key购买 nike

我遇到了以下问题:

public void AddConfig<T>(Config c)  where T : BaseTypeA
{
// do stuff
}

public void AddConfig<T>(Config c) where T : BaseTypeB
{
// do stuff
}

我很想能够做到这一点。但我认为这是不可能的。编译器忽略约束。为什么? (我知道这是设计使然)。

我认为我的 2 个选择是:

  1. 制定 2 个不同的功能。
  2. 创建 2 个不同的配置类。

对吧?

最佳答案

如果你的意思是在同一个类中那么你是正确的(我认为编译器不会检查以确保 BaseTypeA 和 BaseTypeB 不能相互转换,这是你需要检查以确保它们是唯一的方法,例如 where T : BaseTypeA && T !: BaseTypeB 如果你明白我的意思)。

话虽如此,你为什么不做这样的事情:

 interface IConfigurable
{
void AddConfig(Config c)
}

public class BaseTypeA : IConfigurable

public class BaseTypeB : IConfigurable

关于c# - 方法和约束的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199939/

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