从C#转换为Powershell语法

3

在C#中,我可以使用方法Console.Error.WriteLine。在PowerShell中这种方法不可用,相反我必须编写:

[Console]::Error.WriteLine

为什么要使用方括号和双冒号?

ps. 明确一点,我对日志记录不感兴趣,我想了解类型、对象和方法的语法。


1
这总是有趣的语法特性的挑战。你不能(轻易地)在谷歌上搜索它! - derekerdmann
3个回答

10

方括号 = 访问类型

双冒号 = 访问类型的静态成员 : [MyType] 返回一个 Type 实例

例如:

c:> [System.Int32]

IsPublic IsSerial Name BaseType

-------- -------- ---- --------

True True Int32 System.ValueType

使用点符号只能让你访问 Type 实例的实例成员 (大多是反射相关的方法)...

c:\> [System.Int32].Parse("3")

Method call failed because [System.Runtype] does not have any "Parse" member

c:\> [System.Int32].AssemblyQualifiedName

System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

so::是访问类的静态成员的方法。

c:\> [System.Int32]::Parse("3")
3

5
方括号[]是PowerShell表示类型的方法。双冒号::表示该类型的静态成员或方法,而正常的句点.表示实例成员或方法。
请注意,这些受到其他.NET语言的影响 - C#使用.进行所有成员访问,而C++则使用::用于命名空间、子类和静态调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接