gpt4 book ai didi

c# - 动态和 System.Object 之间的区别

转载 作者:可可西里 更新时间:2023-11-01 08:41:42 28 4
gpt4 key购买 nike

声明为动态的变量和声明为 System.Object 的变量有什么区别?运行以下函数似乎表明两个变量都动态转换为正确的类型:

void ObjectTest()
{
System.Object MyTestVar = "test";
dynamic MyTestVar2 = "Testing 123";

Console.WriteLine("{0}", MyTestVar.GetType());
Console.WriteLine("{0}", MyTestVar2.GetType());

MyTestVar = 123;
MyTestVar2 = 321;

Console.WriteLine("{0}", MyTestVar.GetType());
Console.WriteLine("{0}", MyTestVar2.GetType());
}

最佳答案

区别在于 MyTestVar2.ToUpper() 编译并工作,无需任何显式转换。

object 是普通类型。
dynamic 基本上是一种占位符类型,它会导致编译器发出动态的后期绑定(bind)调用。

GetType() 是由 object 类定义的普通函数,它在您调用它的实例 上运行。
GetType() 完全不受引用您调用它的对象的变量声明类型的影响。 (可空值除外)

关于c# - 动态和 System.Object 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464073/

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