gpt4 book ai didi

c# - 动态参数导致编译器认为方法返回是动态的

转载 作者:IT王子 更新时间:2023-10-29 04:09:45 25 4
gpt4 key购买 nike

如果我有一个动态参数,编译器似乎会放弃返回类型并认为它是动态的。

例如:

public MethodResult IsValid(object userLogin)
{
return new MethodResult();
}

你会认为:

var isValidResult = IsValid(someObject());

应该读作

dynamic -> MethodResult 

但它认为它是:

dynamic -> dynamic

尽管返回是强类型的,但向签名添加动态参数是否会完全阻止编译器知道返回应该是什么?

最佳答案

是的,动态阻止编译器了解任何参数、属性或方法返回类型的类型。添加一个明确的强制转换,如:

(MethodResult)IsValid(someObject));

这里的原因是,一旦您进入 C# 中的动态世界,您就会进入后期绑定(bind)。编译器无法验证此代码,因为它无法再使用任何静态类型分析。所以它推迟到以后。您可以通过提供静态转换作为编译器的指南来帮助克服这个问题。

关于c# - 动态参数导致编译器认为方法返回是动态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829518/

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