gpt4 book ai didi

c# - 在 C# 中使用动态类型的优点

转载 作者:行者123 更新时间:2023-11-30 12:09:22 25 4
gpt4 key购买 nike

例如,如果实例方法 exampleMethod1 只有一个参数,编译器会识别出对该方法的第一次调用,ec。 exampleMethod1(20, 4) 无效,因为它包含两个参数。

该调用导致编译器错误。编译器未检查对方法 dynamic_ec.exampleMethod1(10, 4) 的第二次调用,因为 dynamic_ec 的类型是动态的。因此,没有报告编译器错误。

那么编译时检查和运行时检查的区别和使用动态类型的优势是什么?

最佳答案

动态类型对于与其他语言或框架(如 python、javascript)的互操作性很有用。

如果没有动态,您必须依靠反射来获取对象的类型并访问其属性和方法。语法有时难以阅读,因此代码难以维护。在这里使用动态可能比反射更容易、更方便。

Anders Hejlsberg 在 PDC08 给出了一个很好的例子看起来像这样:

object calc = GetCalculator();
Type calcType = calc.GetType();
object res = calcType.InvokeMember(
"Add", BindingFlags.InvokeMethod,
null, new object[] { 10, 20 });
int sum = Convert.ToInt32(res);

该函数返回一个计算器,但系统在编译时并不知道这个计算器对象的确切类型。代码唯一依赖的是这个对象应该有 Add 方法。

有了 dynamic 关键字,这段代码看起来就和这一段一样简单:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);

Reflection Vs Dynamic

Understanding the Dynamic Keyword

关于c# - 在 C# 中使用动态类型的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544784/

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