c# - 为什么将字节值分配给动态变量将动态更改为字节数据类型?

Abo*_*azl 1 c#

在一次采访中,我被要求定义以下代码的输出:

    byte data= 100;
    dynamic val = data;
    Console.WriteLine(val.GetType())
Run Code Online (Sandbox Code Playgroud)

我回答说它不会改变val变量的数据类型,但是当我在控制台中测试时,它确实改变了! val变量更改为 System.Byte

但更有趣的是,当您将val数据类型更改为 int32 时,仍然没有任何变化System.Int32

    byte data= 100;
    int val = data;
    Console.WriteLine(val.GetType())
Run Code Online (Sandbox Code Playgroud)

这些转换的逻辑是什么?

Eri*_*ert 6

你误解了什么dynamic意思。 dynamic是 的同义词object。你会在你的程序的行为感到惊讶,如果你换成dynamicobject?如果没有,那么你的问题得到了回答;如果是,请更详细地解释您的困惑是什么。