相关疑难解决方法(0)

在 VS2019 中测试 C# 9.0 - CS0518 IsExternalInit 未定义或导入......我如何定义/导入它?

编辑 [2020 年 11 月 29 日]:.NET 5.0 现已发布,但如果您的目标是 .NET Standard 2.1,则仍然需要以下解决方案


C# 9.0 仍在开发中。有几个参考资料让我相信它现在应该是可测试的(无论如何,其中一些)。

  1. 由 Awesome 先生本人撰写的 Microsoft 博客,介绍了这些功能。https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
  2. github上的语言跟踪页面:https : //github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Status.md

我正在使用 VS 2019 16.7 预览版 3.1。我选择了语言版本作为项目的预览

一些 C# 9 功能,我可以使用。喜欢:Dictionary<string, object> Stuff = new()

但是使用新init功能会给我这个错误:Error CS0518 Predefined type 'System.Runtime.CompilerServices.IsExternalInit' is not defined or imported

我该如何解决?

导致错误的代码示例:

class Test
{
   public int Hello { get; init; }
}
Run Code Online (Sandbox Code Playgroud)

record Test(int hello);
Run Code Online (Sandbox Code Playgroud)

记录定义是速记并扩展为使用 的内容init,这就是它也受到影响的原因。

我上面链接的语言跟踪页面说该功能是Merged into …

c# c#-9.0

50
推荐指数
3
解决办法
7813
查看次数

是否可以使用私有构造函数创建 C# 记录?

你好,

\n

I\xc2\xb4m 尝试discriminated union type在 C# 中重建 a 。
\n我总是用这样的类创建它们:

\n
public abstract class Result\n{\n    private Result() { }\n\n    public sealed class Ok : Result\n    {\n        public Ok(object result)    // don\xc2\xb4t worry about object - it\xc2\xb4s a sample\n            => Result = result;\n        \n        public object Result { get; }\n    }\n\n    public sealed class Error : Result\n    {\n        public Error(string message)\n            => Message = message;\n\n        public string Message { get; }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

问题是,与以下内容相比,样板代码太多了F#

\n
type …
Run Code Online (Sandbox Code Playgroud)

c# f# record discriminated-union

20
推荐指数
1
解决办法
5809
查看次数

标签 统计

c# ×2

c#-9.0 ×1

discriminated-union ×1

f# ×1

record ×1