gpt4 book ai didi

function - 为什么不能用 VAR 返回类型声明函数?

转载 作者:行者123 更新时间:2023-12-04 16:41:28 24 4
gpt4 key购买 nike

在 C# 中,我们有 var数据类型,但我们不能将其用作函数返回类型。
为什么这是不可能的?

public var myFunction()
{
var = some operations
}

最佳答案

我相信这部分是由于编译器的设计。埃里克·利珀特 blogged关于为什么字段不能使用隐式类型,我怀疑一些相同的参数适用于方法。

但无论如何,你很容易以模棱两可的方式结束。例如:

var Method1(bool callMethod2)
{
return callMethod2 ? Method2() : null;
}

var Method2()
{
return Method1(false);
}

这里的类型应该是什么?

一个更简单的例子:
var Method1(bool throwException)
{
if (!throwException)
{
return Method1(true);
}
throw new Exception("Bang!");
}

诚然,这种模棱两可的情况是完全不允许的,但我怀疑设计团队认为设计和实现增加的复杂性不值得从中受益。不要忘记他们的运行资源有限 - 可以在 var 之间进行选择对于方法和 async/await ,我会立即选择后者。 (诚​​然,我会选择其他功能而不是 dynamic ,但那是另一回事......)

请注意,返回类型推断是针对 lambda 表达式执行的,因此它的想法并不疯狂。例如:
IEnumerable<string> x = new[] { "x", "y", "z" };

var result = x.Select(s => { return s.Length; }); // Long form

当编译器在 Select 上执行重载决议时,编译器会推断出 lambda 表达式的完整类型。 ,将其转换为 Func<string, int> .将相同的想法应用于方法并非不可想象 - 只是复杂。

关于function - 为什么不能用 VAR 返回类型声明函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132289/

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