为什么Powershell中有一些属性和方法可用,而不是C#

时间:2012-11-19 10:20:20

标签: c# powershell

以下所有内容都在PowerShell中完美运行,但它们甚至无法在Visual Studio中用C#编译:

D:\> $dow = [DayOfWeek]'Monday'
D:\> $dow.ToInt32($null)
1
D:\> $dow.value__
1

为什么会这样?

感谢。

3 个答案:

答案 0 :(得分:3)

因为PowerShell和C#是完全不同的系统。

C#是一种强类型编译语言,PowerShell是一种脚本语言。就像C#与VBA不同,它与PowerShell不同,后者又与VBA不同。

所以每个都有独特的功能,有些功能在不同的环境中是相同的,大多数功能都没有。

答案 1 :(得分:2)

我的猜测是因为所有枚举都会实现IConvertible。在C#中,ToInt32方法不是直接可见的,因为接口是显式实现的,但Powershell可能有不同的规则。

答案 2 :(得分:2)

在大多数情况下,C#是静态类型语言,而PowerShell主要是动态类型。基本上这意味着类型检查是在编译时在C#中完成的(不包括动态代码块),类型检查是在运行时在PowerShell中完成的。

C#还具有类型安全性,可防止您将一种类型的值视为另一种类型的值。因此,您将收到编译错误。