c# - 为什么在C#中创建列表会导致此错误?

标签 c# list compiler-errors

尝试在C#中创建简单列表时,出现以下错误:
“功能'顶级语句'当前处于预览状态,不受支持。要使用预览功能,请使用“预览”语言版本。 [5.1]”
此时,我输入的唯一代码是:

using System;
using System.Collections.Generic;

List<string> stringList = new List<string>();
为什么我会直接使用C#的预览版,肯定列表已经使用了一段时间了?

最佳答案

您收到的错误与列表无关,而与范围有关。所以答案

surely lists have been in use for a while?


是确定的"is"。列表(或至少是数组)自C#开始以来就存在,而泛型紧随C#2.0之后,而VS2005才支持泛型(有关C#语言历史的更多信息,请参见https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-version-history)。
但是,您的问题是您在类外有一个陈述。但是,类是OOP背后的非常基本的概念-一切都与类有关。以下内容(与列表无关)也将无效:
using System;
using System.Collections.Generic;

int i = 3;
如前所述,.NET中的所有内容都与类相关-没有“全局”这样的概念性内容。因此,您必须将语句移到一个类中:
using System;
using System.Collections.Generic;

class MyClass
{
    List<string> stringList = new List<string>();
}
这会将您的列表范围限制为MyClass的特定实例。您可以进一步将变量的范围限制为方法甚至方法中的特定范围。有关范围的更多信息,请阅读this
在您收到的所有错误消息之后,都涉及到under discussion for C#9的新功能:

Allow a sequence of statements to occur right before the namespace_member_declarations of a compilation_unit (i.e. source file).

关于c# - 为什么在C#中创建列表会导致此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63657593/

相关文章:

c# - 等价于 C# 中的 `IF ( X AND ( 2 ^ Y ) ) Then`

list - 如何使用 foldLeft 从列表中找到值的位置?

jquery-ui - 查询未定义错误jquery-ui.min.js

android - Android Delphi xe7中的错误

c++ - 什么时候允许折叠表达式作为模板参数?

c# - 如何处置在任务中使用的 MemoryStream?

c# - 现有连接被 SMTP 客户端中的远程主机强行关闭

c# - 从自定义 HttpModule 中选择 HttpHandler

css - IE7定义列表-对齐问题

python - 形成一个字典,键来自列表,值是 Python 中另一个列表中项目的出现