gpt4 book ai didi

c# - 为什么以下代码片段会成为 C#2.0 类型推断的问题?

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:35 25 4
gpt4 key购买 nike

我在 Jon Skeet 的 CSharp in Depth 的第 9 章中解释了 3.0 中类型推断的改进

Pg.247 上有一段代码片段“不应使用 2.0 进行编译”——但我找不到不应该这样做的原因。在目标框架为 2.0 的项目上尝试使用 VS2008 C# Express Edition 的问题 - 以下所有三个调用也可以编译和运行

2.0 引入了推断正确类型的委托(delegate)的能力。

new List<ThreadStart>().Add( delegate { Console.WriteLine("New Thread!"); } );   // works

当然,Jon 不会错的 (;) 'Sql is broken' + 在本书的勘误表页面上没有提到这一点。)所以我的主要怀疑是它仍在使用 3.0 类型推断 - 什么我失踪了吗?

    delegate int MyDelegate(string s);
delegate TOutput MyConverter<TInput, TOutput>(TInput input);
static void MyParse(MyDelegate del)
{
Console.WriteLine(del("100"));
}
static void MyConvert<TInput, TOutput>(MyConverter<TInput, TOutput> del, TInput input)
{
Console.WriteLine(del(input));
}

// Jon's code snippet begin
delegate T MyFunc<T>();
static void WriteResult<T>(MyFunc<T> function)
{
Console.WriteLine(function());
}
// end

static void Main(string[] args)
{
MyParse(delegate(string s)
{
return Int32.Parse(s);
}
);
MyConvert(delegate(string s)
{
return Int32.Parse(s);
},
"100");
WriteResult(delegate { return 5; }); // Jon: Shouldn't work.
}

最佳答案

“目标框架”设置的作用是禁用已添加到较新框架版本中的库和方法。大多数新语言功能不需要特殊的运行时支持或新库。因此,如果您使用它们,则需要更新的编译器,但您的应用仍可在 2.0 上运行。

关于c# - 为什么以下代码片段会成为 C#2.0 类型推断的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023345/

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