【发布时间】:2017-04-04 16:56:26
【问题描述】:
我在这里错过了什么。
Visual Studio 告诉我使用内联模式匹配并为我重新编写代码,但当我收到错误消息时:
严重性代码描述项目文件行抑制状态 错误 CS8121 TReturnState 类型的表达式无法由 LightState 类型的模式处理。 DataModels C:\Users\Michael\Documents\windows\GCMS UWP\Models\Models\Elements\Lights\Light.cs 77 活动
这是原始代码:
public override void UpdateState<TReturnState>(TReturnState returnState)
{
var newState = returnState as LightState;
if (newState != null)
State = newState;
base.UpdateState(returnState);
}
这是 VS 为我重做时的样子。
public override void UpdateState<TReturnState>(TReturnState returnState)
{
if (returnState is LightState newState)
State = newState;
base.UpdateState(returnState);
}
我更喜欢调整后的方式,但我得到了错误。我错过了什么还是这是一个错误?
我正在使用的包:
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.3.1",
"Newtonsoft.Json": "9.0.1",
"System.ValueTuple": "4.3.0"
},
【问题讨论】:
-
State = (LightState)newState; -
@SirRufo 它更新一个名为“State”的全局变量怎么没用?
-
@Hogan 哎呀,你是对的...... :o)
-
@Hogan 我也收到了一个错误...并且 Visual Studio 告诉我这是不必要的演员表。
标签: c# pattern-matching c#-7.0