C# 这个语法是什么意思;如果(值为bool v)“;?
我在HelixToolkit.WPF.SharpDX示例中发现了这一点:C# 这个语法是什么意思;如果(值为bool v)“;?,c#,syntax,C#,Syntax,我在HelixToolkit.WPF.SharpDX示例中发现了这一点: 它不能编译,我不能理解这个语法。谷歌也没有解释。有人能解释一下吗?关键字是C#模式匹配的一部分,它允许您检查变量是否可以转换为指定类型。如果可以,则表达式的计算结果为true 如果在表达式后指定变量名,如 if (obj is bool variableName) variableName变量(在本例中为bool类型)将使用obj的值初始化。这允许您在if语句的范围内使用类型化变量,从而避免您每次要执行特定于类型的操作时
它不能编译,我不能理解这个语法。谷歌也没有解释。有人能解释一下吗?关键字是C#模式匹配的一部分,它允许您检查变量是否可以转换为指定类型。如果可以,则表达式的计算结果为true 如果在表达式后指定变量名,如
if (obj is bool variableName)
variableName
变量(在本例中为bool
类型)将使用obj
的值初始化。这允许您在if语句的范围内使用类型化变量,从而避免您每次要执行特定于类型的操作时都强制转换初始的obj
变量
有关更多信息,请查看和。语句执行检查
值是否可以转换为布尔值。如果检查为正,则该值将被转换到变量v
请查看此处以了解更多说明:
但是,我看不出它不编译的原因。为此,您必须至少添加来自编译器的错误消息。值为bool v
如果值
可转换为bool
并将值存储在v
中,则返回true,否则返回false
并将v
设置为默认值。谢谢您,一如既往,问了两秒钟后发现的。:-)问了两秒钟后就拿到了。但你赢了我。要点是你的。谢谢。不,is
没有检查value
是否可以转换为布尔值。您误解了的功能。请参阅此dotnetfiddle:。请注意,类型SomeTypeConvertibeToBool
可以强制转换为bool
。但是,尽管SomeTypeConvertibeToBool
对象可强制转换为bool
,但如果变量的类型为SomeTypeConvertibeToBool
(编译错误),则它无法与bool
类型进行模式匹配。(1/2)(2/2)即使您删除了有问题的代码并尝试将SomeTypeConvertibeToBool
对象填充到object
类型的变量中,然后将object
变量与bool
类型进行模式匹配(基本上就是问题中的代码所做的),它也不会匹配。因为SomeTypeConvertibeToBool
实例不是bool
类型的值。(免责声明,由于其中所述的错误信息,我否决了您的答案。)旁注:您的链接指向的是德语文档,而不是英语文档。你可能也想解决这个问题。
if (obj is bool variableName)