Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的类型推理_C#_.net_Type Inference - Fatal编程技术网

C# C语言中的类型推理

C# C语言中的类型推理,c#,.net,type-inference,C#,.net,Type Inference,我知道msdn应该是第一个去的地方,在我拿到独家新闻之后。msdn不会真正作为技术规范的一部分提供的内容是我现在要问的: 该主题在日常开发过程中究竟有多大用处? 它与clr中的匿名类型有任何形式的关联吗? 它为没有它就无法完成的事情提供了什么条件? 哪些.net功能依赖于主题,如果没有作为框架的一部分,就不可能存在? 为了说明问题的细节,在伪代码中了解如果使用lambdas和类型推断调用该方法,编译器如何实际确定所需的类型将非常有趣 我希望看到编译器关于如何定位该类型的逻辑流程。类型推断在C中的

我知道msdn应该是第一个去的地方,在我拿到独家新闻之后。msdn不会真正作为技术规范的一部分提供的内容是我现在要问的:

该主题在日常开发过程中究竟有多大用处? 它与clr中的匿名类型有任何形式的关联吗? 它为没有它就无法完成的事情提供了什么条件? 哪些.net功能依赖于主题,如果没有作为框架的一部分,就不可能存在? 为了说明问题的细节,在伪代码中了解如果使用lambdas和类型推断调用该方法,编译器如何实际确定所需的类型将非常有趣


我希望看到编译器关于如何定位该类型的逻辑流程。

类型推断在C中的许多地方都会发生,至少在以下方面:

var关键字,它告诉编译器根据初始化变量的内容推断变量的正确类型 在泛型方法调用中保留类型参数的能力,只要它们可以从参数中推导出来 从lambda表达式参数中省略类型的能力,只要它们可以被推断 回答您的问题:

1它节省了大量键入,特别是在使用所谓的LINQ方法时。比如说

List<string> myList = new List<string>();
// ...
IEnumerable<string> result = myList.Where<string>((string s) => s.Length > 0)
    .Select<string, string>((string s) => s.ToLower());

var myList = new List<string>();
// ...
var result = myList.Where(s => s.Length > 0).Select(s => s.ToLower());
2我不知道你所说的相关性是什么意思,但是如果没有var关键字,你就不能让变量以一种类型安全的方式引用匿名类型,你可以始终使用object或dynamic,这使得在使用匿名类型时非常重要

就我所能想到的,什么都没有。这只是一个方便的功能。当然,它的缺失会使前面提到的匿名类型变得不那么有用,但它们也是一个方便的特性

4我想3个也能回答这个问题

它是语法上的糖。 我不知道。 它大大简化了程序员的工作。 林克。
对于如此广泛的问题,这是一个很好的开始!,但是,如果没有var,匿名类型的可用性可能会更有限。想象一下,就像LINQ表达式中的中间产物一样。