PowerShell中为何字符串字面量调用System.String方法失败?
问题解答
你的问题核心是混淆了PowerShell中实例方法和静态方法的调用语法:
- 你写的
"ssz"::EndsWith("z")是在尝试以静态方法的语法调用字符串实例,但EndsWith、Substring都是System.String的实例方法,PowerShell会去查找[System.String]类的静态成员,自然找不到对应方法。 - 而
"ssz"|Get-Member默认显示的是实例成员,所以能看到这些方法存在。
正确调用方式
1. 实例方法调用(推荐)
直接用点语法调用实例方法,和C#的写法一致:
"ssz".EndsWith("z") # 返回 True "ssz".Substring(2,1) # 返回 "z"
2. 静态方法调用(仅针对有静态重载的方法)
System.String类部分方法有静态重载,比如EndsWith,可以这么调用(但实例调用更直观,一般不推荐):
[System.String]::EndsWith("ssz", "z") # 返回 True
总结:PowerShell里,实例方法用对象.方法(),静态方法用[类型]::方法(),别搞混两种语法即可。
内容的提问来源于stack exchange,提问作者Mauricio Ortega
相关产品推荐
相关产品推荐

