gpt4 book ai didi

c# - 为什么动态变量的类型不像运行时方法的返回类型?

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:01 25 4
gpt4 key购买 nike

我有以下 C# 代码:

public class A
{
public static A amethod()
{
return new C()
}

}

public class C : A
{
}

static void Main(string[] args)
{
dynamic obj1 = A.amethod()
}

为什么运行后obj1的类型是C而不是A?

最佳答案

Why is the type of obj1 C and not A after running the application?

同理为什么修改时obj1的类型是C:

A obj1 = A.amethod();

虽然 obj1 的静态已知类型是 A,但它的运行时类型是 C,因为那是 amethod() 返回。

当您将 obj1 的类型更改为 dynamic 时,分配给它的值仍然是 C。然而,编译器 promise 不会用任何静态类型检查来打扰你,所以如果你这样做的话

obj1.SomeMethod();

代码会编译,但它会在运行时中断,除非您更改 C 以实现 SomeMethod()

关于c# - 为什么动态变量的类型不像运行时方法的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358252/

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