gpt4 book ai didi

c# - 对动态类型变量的 ToString 调用在 C# 中的行为不同

转载 作者:行者123 更新时间:2023-11-30 13:57:34 26 4
gpt4 key购买 nike

谁能给我解释一下这两个字符串变量的区别:

        dynamic dateStrAsDynamic = "12/10/2013";
var dateStrFromDynamic = dateStrAsDynamic.ToString();
var regularDateStr = "12/10/2013";

这两个行为完全相同,但在调试时调用 DateTime.Parse 第一个告诉我调试时不支持此动态操作,我的意思是“哪个动态操作?”,无论如何它是动态操作;不是已经结束了吗?

通过在这两个上调用 DateTime.Parse 生成的 IL 代码(当然在 ToString 被调用并分配给 dateStrFromDynamic 之后)也有很大的不同,我无法完全掌握。

这两者真的有区别吗,还是我遗漏了什么?

最佳答案

I mean "which dynamic operation?"

使用动态变量作为参数调用方法的方法。

注意 dateStrFromDynamic 类型仍然是 dynamic - 编译器不知道 ToString() 肯定会返回一个 >字符串。几乎所有动态操作的结果都是另一个动态值 - 如果您想告诉编译器您希望 dateStrFromDynamic 的类型为 string,则需要明确说明:

string dateStrFromDynamic = dateStrAsDynamic.ToString();

或者只是:

string dateStrFromDynamic = dateStrAsDynamic;

(假设它确实是 开头的字符串)。

所以,是的,dateStrFromDynamicregularDateStr 之间一个巨大的区别 - 如果您将鼠标悬停在 var 上在 Visual Studio 中,它会变得更加明显,因为它会告诉您编译器为每个变量推断出的类型。

关于c# - 对动态类型变量的 ToString 调用在 C# 中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409270/

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