C# 有没有办法使用';var';关键字对函数参数?

C# 有没有办法使用';var';关键字对函数参数?,c#,C#,我在C#学习泛型。我想我的问题(…我要问的问题)可能很愚蠢,但有人说“什么都要问” 所以我刚才还在想 为什么不能在函数参数列表中使用'var'关键字? 例如: 动态关键字正在工作 var与泛型无关。它有两个用途: 首先是声明的一个实例。由于它是匿名的,var是声明变量的唯一方法 第二是作为捷径。这样可以省去编写需要声明的类型名称的工作。但是,编译器必须能够根据分配给变量的值确定类型 更多信息请参见。var与泛型无关。它有两个用途: 首先是声明的一个实例。由于它是匿名的,var是声明变量的唯一方

我在C#学习泛型。我想我的问题(…我要问的问题)可能很愚蠢,但有人说“什么都要问”

所以我刚才还在想

为什么不能在函数参数列表中使用'var'关键字?

例如:

动态关键字正在工作


var
与泛型无关。它有两个用途:

首先是声明的一个实例。由于它是匿名的,
var
是声明变量的唯一方法

第二是作为捷径。这样可以省去编写需要声明的类型名称的工作。但是,编译器必须能够根据分配给变量的值确定类型


更多信息请参见。

var
与泛型无关。它有两个用途:

首先是声明的一个实例。由于它是匿名的,
var
是声明变量的唯一方法

第二是作为捷径。这样可以省去编写需要声明的类型名称的工作。但是,编译器必须能够根据分配给变量的值确定类型

更多信息请参见。

C#中的变量与其他语言中的变量非常不同

重要的是要理解var关键字并不表示“variant”,也不表示变量是松散类型的,或者是后期绑定的。这只意味着编译器确定并分配最合适的类型

不能将var变量赋值为null,因为在这种情况下,编译器将无法理解该类型

类似地,如果您无法从方法返回VAR,或者无法将方法参数声明为VAR,因为C#compiler无法在编译时定义这些东西的类型

请参阅

C#中的var与其他语言中的var非常不同

重要的是要理解var关键字并不表示“variant”,也不表示变量是松散类型的,或者是后期绑定的。这只意味着编译器确定并分配最合适的类型

不能将var变量赋值为null,因为在这种情况下,编译器将无法理解该类型

类似地,如果您无法从方法返回VAR,或者无法将方法参数声明为VAR,因为C#compiler无法在编译时定义这些东西的类型


请参考

简短的回答:因为语言规范说,只有编译器在编译时能够找到正确的类型,才可以使用
var
。泛型中的
T
是一种类型,您可以在括号(
)中定义用于参数或返回值的类型。var是泛型变量类型,但不能在中用作参数或返回类型。而是使用对象。
dynamic
实际上与
var
无关。我建议您从标准文档中多读一点这些关键字。简短的回答是:因为语言规范说,只有在编译器能够在编译时找到正确的类型时,才可以使用
var
。泛型中的
T
是一种类型,您可以在括号(
)中定义用于参数或返回值的类型。var是泛型变量类型,但不能在中用作参数或返回类型。而是使用对象。
dynamic
实际上与
var
无关。我建议您从标准文档中进一步阅读这些关键字。您可以将匿名类型变量声明为
object
(因为它们是隐式派生的)var不是唯一的way@UnholySheep是的,但是您将无法访问匿名类型中定义的所有成员,你可以将匿名类型变量声明为
对象
(因为它们是隐式派生的)var不是唯一的变量way@UnholySheep是的,但是随后您将失去对匿名类型中定义的所有成员的访问权,因此大部分情况下无法达到目的。