gpt4 book ai didi

c# - 为什么接口(interface)变量实例化是可能的?

转载 作者:太空狗 更新时间:2023-10-29 19:48:31 25 4
gpt4 key购买 nike

据我所知,接口(interface)不能被实例化。

如果这是真的,为什么下面的代码可以编译和执行?它允许您创建可变接口(interface)。为什么这是可能的?

接口(interface):

public interface IDynamicCode<out TCodeOut>
{
object DynamicClassInstance { get; set; }
TCodeOut Execute(string value = "");
}

InCode:

var x = new IDynamicCode<string>[10];

结果:

Result

更新:

只有声明数组时才会发生。没有一个例子。

最佳答案

您不是在实例化一个接口(interface),而是该接口(interface)的一个数组。

您可以分配任何实现 IDynamicCode<string> 的类的实例到那个数组。假设你有 public class Foo : IDynamicCode<string> { } ,您可以实例化它并将其分配给该数组的一个元素:

var x = new IDynamicCode<string>[10];
x[5] = new Foo();

实例化接口(interface)不会编译:

var bar = new IDynamicCode<string>();

关于c# - 为什么接口(interface)变量实例化是可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30914076/

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