微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 dotnet-script 中使用 switch 表达式

如何解决无法在 dotnet-script 中使用 switch 表达式

Dotnet-script 不能使用 C#8.0 添加的 switch 表达式。是规范吗?

dotnet-script.exe --info 版本:1.1.0 目标框架:net5.0 .NET 核心版本:5.0.7 平台标识符:win 运行时标识符:win10-x64

代码

var i = 1;
var t = i switch{
1 => 3,_ => 5
};

返回

System.AggregateException: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.)
  + System.Threading.Tasks.TaskReplicator.Run<TState>(System.Threading.Tasks.TaskReplicator.ReplicatableuserAction<TState>,System.Threading.Tasks.ParallelOptions,bool)
  + System.Threading.Tasks.Parallel.ForWorker<TLocal>(int,int,Action<int>,Action<int,System.Threading.Tasks.ParallelLoopState>,Func<int,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal>,Func<TLocal>,Action<TLocal>)
  + System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionorOtherException(System.Collections.ICollection,System.Threading.CancellationToken,System.Exception)
  + System.Threading.Tasks.Parallel.ForWorker<TLocal>(int,Action<TLocal>)
  + System.Threading.Tasks.Parallel.For(int,Action<int>)
  + Roslyn.Utilities.RoslynParallel.For(int,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceNamespaceSymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceModuleSymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceAssemblySymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetSourceDeclarationDiagnostics(Microsoft.CodeAnalysis.SyntaxTree,Nullable<Microsoft.CodeAnalysis.Text.TextSpan>,Func<IEnumerable<Microsoft.CodeAnalysis.Diagnostic>,Microsoft.CodeAnalysis.SyntaxTree,IEnumerable<Microsoft.CodeAnalysis.Diagnostic>>,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnostics(Microsoft.CodeAnalysis.CompilationStage,bool,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal>,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream,System.IO.Stream,IEnumerable<Microsoft.CodeAnalysis.ResourceDescription>,Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,IEnumerable<Microsoft.CodeAnalysis.EmbeddedText>,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.Build<T>(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor<T>(Microsoft.CodeAnalysis.Scripting.ScriptCompiler,Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken)
  + Script<T>.GetExecutor(System.Threading.CancellationToken)
  + Script<T>.RunFromAsync(Microsoft.CodeAnalysis.Scripting.ScriptState,Func<System.Exception,bool>,System.Threading.CancellationToken)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。