繁体   English   中英

为什么我不能用 var 隐式转换?

[英]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作为类型,就像您使用intshort等一样。

正确的语法是:

var a = new int[10];

这适用于您的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM