gpt4 book ai didi

c# - 为什么此代码无法编译,尽管接口(interface)是引用类型?

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

我很困惑。在 Why are interfaces in .Net reference types?据说.Net 中的接口(interface)是引用类型。第一个代码片段无法编译。它说类似“T 必须是引用类型...”

    public ISomeInterface DoMagic<T>(Expression<Func<object>> action, Tuple<string, DateTime, decimal> tuple) 
where T : ISomeInterface
{
Magician m = new Magician();
return m.Magic<T>(()=> action, tuple.Item3);
}

第二次编译。

    public ISomeInterface DoMagic<T>(Expression<Func<object>> action, Tuple<string, DateTime, decimal> tuple) 
where T : class, ISomeInterface
{
Magician m = new Magician();
return m.Magic<T>(()=> action, tuple.Item3);
}

如果接口(interface)是引用类型,为什么第一个代码片段无法编译?

最佳答案

因为它是关于封装在接口(interface)内的对象的真实类型。通过仅声明 ISomeInterface ,您没有定义必须 条件:T 必须是引用类型。

因为我可以拥有:

public interface IStructInterface {
}
public struct A : IStructInterface {
}

这是一个类型。

通过定义额外的约束,您声明此引用类型。

关于c# - 为什么此代码无法编译,尽管接口(interface)是引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649630/

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