[英]Why can’t I implicitly convert with var?
(我的问题参考下面写的代码)
为什么我不能将类型 int[] 隐式转换为 var[]? 我知道你不能隐式分配 var 和 const。 但为什么? 编译器实际上是在告诉我“不能将 int[] 类型隐式转换为 var[]。”
如果计算机已经知道我的意图,他们为什么不这样做呢? 未来的 IDE、编译器、visual studio(不知道用哪一个)会不会有朝一日在 C# 中为你自动转换? 或者有什么原因你不能转换它? 希望我能了解原因。
class Program
{
static void Main(string[] args)
{
var[ ] a = new int[10];
for (int k = 0; k < 10; k++) {
a[k] = k*2;
}
foreach (int k in a) {
Console.WriteLine(k);
}
}
}
(代码源sololearn)
我的最后一个问题只是好奇。 (如上面的例子)日常编程看起来与教科书有很大不同吗? 我知道教科书对于学习理论和理解至关重要。
var
是关键字,而不是类型,因此您不能拥有var
数组。
var
关键字通过省去声明特定数据类型的需要来简化代码,而不是让编译器从变量赋值中推断出来。
因此, var[ ] a = new int[10];
应该简单地更改为var a = new int[10];
出现错误 state 实际上是次要错误。 主要错误是:
找不到类型或命名空间名称“var”
假设您使用var
作为类型,就像您使用int
或short
等一样。
正确的语法是:
var a = new int[10];
这适用于您的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.