c# – 用模式切换语句
发布时间:2020-12-15 23:38:05 所属栏目:百科 来源:网络整理
导读:我使用Visual Studio Code,在VS 2017发布之后,我刚刚安装了Net Core Tools 1.1.1,希望实现新的C#7模式匹配功能,如MSFT的 this示例中的那个: switch(shape){ case Circle c: WriteLine($"circle with radius {c.Radius}"); break; case Rectangle s when (s.
我使用Visual Studio Code,在VS 2017发布之后,我刚刚安装了Net Core Tools 1.1.1,希望实现新的C#7模式匹配功能,如MSFT的
this示例中的那个:
switch(shape) { case Circle c: WriteLine($"circle with radius {c.Radius}"); break; case Rectangle s when (s.Length == s.Height): WriteLine($"{s.Length} x {s.Height} square"); break; case Rectangle r: WriteLine($"{r.Length} x {r.Height} rectangle"); break; default: WriteLine("<unknown shape>"); break; case null: throw new ArgumentNullException(nameof(shape)); } 我必须实现一个带有模式的Switch语句来替换if-then-else的长序列: var property = obj.GetType().GetProperty("XYZ"); var propertyType = Type.GetType(property.PropertyType.FullName); switch (propertyType) { case Boolean b: writeLine("Convert a string to a Boolean"); break; case Int32 i: WriteLine("Convert a string to a Int32"); break; default: WriteLine("unknown type,skip"); break; } 当我尝试编译时,我收到以下错误: ‘类型为Type的表达式不能由bool类型的模式处理. [efcore]” ‘类型为Type的表达式不能由int类型的模式处理. [efcore]” 我究竟做错了什么? 解决方法
您需要打开值,而不是值的类型:
var property = obj.GetType().GetProperty("XYZ"); var value = property.GetValue(obj); switch (value) { case Boolean b: ... ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |