gpt4 book ai didi

c#, 接口(interface), 赋值

转载 作者:行者123 更新时间:2023-11-30 19:12:44 25 4
gpt4 key购买 nike

我有一个问题。接口(interface)不包含任何定义。接口(interface)不能被实例化。此代码如何有效?

IDataReader reader = cmd.ExecuteReader()

cmdExecuteReader 返回一个在内存中有值的对象。读者是接口(interface)。如何将对象分配给接口(interface)?接口(interface)不只是一个内部没有方法定义的契约吗?

最佳答案

ExecuteReader不返回一个对象 - 它返回一个引用到一个实现了IDataReader的某种类型的对象。 (或者当然是 null)。

这个想法是调用者/客户端不需要知道实现类,只需要知道它实现了接口(interface)。当客户端调用类似 reader.Next() 的方法时,这将使用基于对象的执行时间类型的实现,reader 的值|指的是。

将引用值分配给变量不会更改该引用所指对象的类型。例如:

string text = "hello";
object o = text;

现在otext具有相同的值 - 对相同字符串的引用。如果你打电话:

Type t = o.GetType();

仍然会返回对 Type 的引用表示 System.String 的对象,因为 o 的值指的是 String目的;您通过其访问对象的变量类型不会更改对象的执行时类型。

关于c#, 接口(interface), 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137492/

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