gpt4 book ai didi

c# - C#中的对象赋值

转载 作者:太空狗 更新时间:2023-10-29 22:03:18 27 4
gpt4 key购买 nike

这是我在使用 C# IList 集合时遇到的事情

IList<MyClass> foo = new List<MyClass>();
var bar = new List<MyClass>();

foo.AddRange() // doesn't compile
bar.AddRange() // compile

据我所知,在 C#(与 C++ 相反)中,当我们使用这种语法创建对象时,对象类型位于右侧(赋值)而不是左侧(声明)。

我在这里错过了什么吗!

编辑

我还是不明白,即使在你回答之后,foo 和 bar 的类型相同! enter image description here

最佳答案

这里没有发生任何微妙的事情:

  • foo 的类型是 IList<MyClass>IList<T>没有 AddRange 方法
  • bar 的类型为 List<MyClass>List<T>确实有一个 AddRange 方法。

就是这样。在 C++ 中也是一样。

更新:在编辑添加中,您正在调用 GetType(),它获取对象的运行时类型 - 在编译时,编译器正在查看 foo 和 bar 变量的静态类型。

思考Object myObj = "MyString"可能会使事情更清楚,因为“对象”和“字符串”之间存在更明显的区别,即使它们具有与 IList 和 List 相同的继承关系

关于c# - C#中的对象赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148321/

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