Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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#_Unity3d_Visual Studio 2019_Using_Idisposable - Fatal编程技术网

C# 统一使用语句的简化

C# 统一使用语句的简化,c#,unity3d,visual-studio-2019,using,idisposable,C#,Unity3d,Visual Studio 2019,Using,Idisposable,我使用的是Unity 2019.2.18f和VS 2019 16.4.3(CSC版本3.4.1-beta4-19610-02)。我对Unity和C#都相当陌生 我编写了如下代码: using (UdpClient client = new UdpClient(...)) { ... } VS 2019建议将该声明简化为: using UdpClient client = new UdpClient(...); ... 我想这是一个好主意。但是,当我这样做时,回到Unity控制台,它会

我使用的是Unity 2019.2.18f和VS 2019 16.4.3(CSC版本3.4.1-beta4-19610-02)。我对Unity和C#都相当陌生

我编写了如下代码:

using (UdpClient client = new UdpClient(...)) {
    ...
}
VS 2019建议将该声明简化为:

using UdpClient client = new UdpClient(...);
...
我想这是一个好主意。但是,当我这样做时,回到Unity控制台,它会抱怨
using
语句中缺少paren:

Assets\Scripts\NavioRemote.cs(106,19): error CS1003: Syntax error, '(' expected
Assets\Scripts\NavioRemote.cs(106,101): error CS1026: ) expected
但是,VS没有报告任何错误

我有两个问题:

  • 为什么Unity在VS认为它是正确的时候却没有编译这个呢
  • 有没有办法让Unity接受这种语法
  • 为什么Unity在VS认为它是正确的时候却没有编译这个呢

    在每个使用不同语言版本编译的环境中。Unity最多只支持C#7.3,而VS 2019支持所有功能。代码使用的语言功能需要C#8.0

    在VS2019中,转到项目的属性“构建”选项卡,您将看到一个“高级”按钮。有一个下拉列表可选择语言版本。我相信它默认为“最新”,而且列表中可能有C#8。如果将其更改为7.3或更低,您将看到相同/类似的行为

    有没有办法让Unity接受这种语法


    不支持。Unity目前最多只支持7.3语言版本。但如果你等几个月或几年,或是时间旅行,然后Unity将迎头赶上。

    可能是因为您使用的是较新版本的C#in VS.Unity最多只支持7.3语言和4.3运行时:请记住Unity不支持最新版本的C#/.Net Framework,因此存在语法上的差异和不可用的功能。另外:
    使用
    只是语法上的甜点为了关闭parens中定义的资源,您仍然可以通过在try块之外声明UdpClient,并在finally块中关闭/处理该UdpClient来完成您想做的事情。我从@ThomasCook的Unity doc链接中看到,它使用的是Roslyn,而不是MS的编译器。很好,谢谢。“我尽我最大的努力去理解Unity在幕后的所作所为”。@JasonC Roslyn是微软制造的,是官方的C#编译器。它在2014/15年取代了以前的c#编译器。在配置VS for 7.3方面也做得不错。谢谢当我转到项目的属性(右键单击Assembly CSharp->properties)时,什么都没有发生,它似乎立即关闭。。。有什么建议吗?