gpt4 book ai didi

c# - C# 是否支持返回类型的类型推断?

转载 作者:太空狗 更新时间:2023-10-29 17:32:12 26 4
gpt4 key购买 nike

这只是好奇是否有基本的东西可以阻止这样的事情(如果已经有某种方式,请纠正我):

public TTo Convert<TTo, TFrom>(TFrom from)
{
...
}

这样调用:

SomeType someType = converter.Convert(someOtherType);

最佳答案

因为如果你这样做会发生什么?

static void M(int x){}
static void M(double x){}
static T N<T>() {}
...
M(N());

现在什么是T?整数还是 double ?

当您知道分配给的类型是什么时,解决问题就很容易了,但是很多时候您分配给的类型就是您首先要弄清楚

由内而外的推理已经够难的了。从外到内的推理要困难得多,而且同时做到这两点是极其困难的。如果编译器很难理解正在发生的事情,那么想象一下当可以 表达式上下文的类型。这种推理使程序更难理解,而不是更容易,因此将它添加到 C# 中不是一个好主意。

也就是说,C# 确实通过 lambda 表达式支持此功能。当面对 lambda 可以以两种、三种或一百万不同方式绑定(bind)的重载解决问题时,我们将其绑定(bind)两种、三种或一百万种不同方式,然后评估这百万种不同的可能绑定(bind)以确定哪一个是“最好的”。这使得重载解析在 C# 中至少是 NP-HARD,并且我花了一年的大部分时间来实现。我们愿意进行这项投资,因为 (1) lambda 非常棒,并且 (2) 大多数时候人们编写的程序可以在合理的时间内进行分析并且可以被人类理解。所以这是值得的。但总的来说,那种高级分析是不值得的。

关于c# - C# 是否支持返回类型的类型推断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764357/

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