gpt4 book ai didi

c# - 为什么不允许从 "class A : IX"到通用 "T where T : IX"的转换?

转载 作者:太空狗 更新时间:2023-10-29 20:45:03 25 4
gpt4 key购买 nike

为什么下面会导致编译错误?

interface IX {}
interface IY {}
class XY : IX, IY {}

void Foo<T>() where T : IX, IY
{
T xy = new XY();
… // ^^^^^^^^
} // error: "Implicit conversion of type 'XY' to 'T' is not possible."

注意:如果 class XY : IXwhere T : IX 也会出现同样的错误。但是,我选择了一个更复杂的示例,因为一个更简单的示例可能会引发规避性的答案,例如,“只需将 xy 的类型从 T 更改为 IX",它不会回答此转换失败的原因

最佳答案

因为如果那是合法的,那么您可以这样做:

interface IPet {} 
interface IMammal {}
class Dog : IPet, IMammal {}
class Cat : IPet, IMammal {}
T Foo<T>() where T : IPet, IMammal
{
return new Dog();
}
...
Cat cat = Foo<Cat>(); // Assigns a Dog to a variable of type Cat.

关于c# - 为什么不允许从 "class A : IX"到通用 "T where T : IX"的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436516/

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