以下所有内容都在PowerShell中完美运行,但它们甚至无法在Visual Studio中用C#编译:
D:\> $dow = [DayOfWeek]'Monday'
D:\> $dow.ToInt32($null)
1
D:\> $dow.value__
1
为什么会这样?
感谢。
答案 0 :(得分:3)
因为PowerShell和C#是完全不同的系统。
C#是一种强类型编译语言,PowerShell是一种脚本语言。就像C#与VBA不同,它与PowerShell不同,后者又与VBA不同。
所以每个都有独特的功能,有些功能在不同的环境中是相同的,大多数功能都没有。
答案 1 :(得分:2)
我的猜测是因为所有枚举都会实现IConvertible
。在C#中,ToInt32
方法不是直接可见的,因为接口是显式实现的,但Powershell可能有不同的规则。
答案 2 :(得分:2)
在大多数情况下,C#是静态类型语言,而PowerShell主要是动态类型。基本上这意味着类型检查是在编译时在C#中完成的(不包括动态代码块),类型检查是在运行时在PowerShell中完成的。
C#还具有类型安全性,可防止您将一种类型的值视为另一种类型的值。因此,您将收到编译错误。