首页 >> 方法大全

关于方法

2022-05-20 方法大全 389 作者:考证青年

谢谢。

本文内容的简要说明

描述如何使用方法对 中的对象执行操作。

详细说明

使用对象来表示数据存储中的项目或计算机的状态。例如,对象代表文件系统驱动器中的文件,对象代表计算机上的进程。

对象具有允许更改对象的属性(存储有关对象的数据)和方法。

“方法”是一组描述,指定可以在对象上执行的操作。例如,一个对象包括用于复制该对象所代表的文件的方法。

要获取任何对象的方法,请使用 Get- 。使用值为“”的属性。以下命令获取进程对象的方法。

Get-Process | Get-Member -MemberType Method

TypeName: System.Diagnostics.Process
Name                      MemberType Definition
----                      ---------- ----------
BeginErrorReadLine        Method     System.Void BeginErrorReadLine()
BeginOutputReadLine       Method     System.Void BeginOutputReadLine()
...
Kill                      Method     System.Void Kill()
Refresh                   Method     System.Void Refresh()
Start                     Method     bool Start()
ToString                  Method     string ToString()
WaitForExit               Method     bool WaitForExit(int milliseconds), ...
WaitForInputIdle          Method     bool WaitForInputIdle(int millisecon...

要执行或“调用”对象的方法方法,请键入一个点 (.)、方法名称和一组括号“()”。如果方法有参数,请将参数值括在括号中。每个方法调用都需要括号,即使没有参数。如果方法有多个参数,则应以逗号分隔。

例如下面的命令调用进程的Kill方法结束记事本进程。

$notepad = Get-Process notepad
$notepad.Kill()

这个例子可以通过结合上面的语句来缩短。

(Get-Process Notepad).Kill()

命令 Get- 用括号括起来,以确保它在调用 Kill 方法之前运行。然后 Kill ,它调用返回对象的方法。

另一个非常有用的方法是 方法。方法 替换字符串中的文本。在下面的示例中,(.) 点可以紧跟在字符串的右引号之后。

'this is rocket science'.Replace('rocket', 'rock')

this is rock science

如前面的示例所示,您可以对使用命令获得的对象、变量中的对象或任何产生对象的对象(如引号中的字符串)调用方法。

从4.0开始,支持动态方法名的方法调用。

方法_方法重载 方法重写_哦冬夜的灯光我觉得这个方法这个方法是什么

方法

要查找对象方法的定义,请转到对象类型的帮助主题并找到其方法页面。例如,以下页面描述了处理对象。

要确定方法的参数,看方法定义,类似于.的语法图。

一个方法定义可能有一个或多个类似于参数集的方法签名。签名显示调用该方法的所有有效命令格式。

例如,一个类的方法包含以下两个方法签名:

    CopyTo(String destFileName)
    CopyTo(String destFileName, Boolean overwrite)

第一个方法签名采用目标文件名(路径)。下面的示例使用第一种方法将文件 Final.txt 复制到 C:\Bin 目录。

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

注意事项

与 的参数模式不同,对象方法以表达式模式执行,这是构建的 .NET 的传递。在表达式模式下,不允许使用字符串(无)。当使用路径作为参数而不是使用路径作为参数时,可以看到这种差异。您可以在分析模式中阅读有关分析模式的信息

第二个方法签名接受目标文件名和一个布尔值,该值确定目标文件是否应该被覆盖(如果它已经存在)。

下面的示例使用第二种方法将文件Final.txt``C:\Bin 复制到目录中,覆盖现有文件。

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

成员访问枚举

从 3.0 开始,使用成员访问运算符 (.) 访问列表集合上不存在的方法会自动枚举集合中的项目并调用每个项目上的方法。请参阅 - 了解详情。

例子

以下示例运行对象集合中单个进程对象的 Kill 方法。

第一个命令启动记事本实例。 Get - 获取进程的所有三个记事本实例并将它们保存在变量 $p 中。

3

下一个命令对变量中的所有三个进程运行 $p Kill 方法。即使进程集合没有 Kill 方法,此命令也有效。

$p.Kill()
Get-Process Notepad

Get- 确认方法 Kill 有效。

Get-Process : Cannot find a process with the name "notepad". Verify the proc
ess name and call the cmdlet again.
At line:1 char:12
+ Get-Process <<<<  notepad
    + CategoryInfo          : ObjectNotFound: (notepad:String) [Get-Process]
, ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShel
l.Commands.GetProcessCommand

此示例在功能上等同于对集合中的每个对象使用 -run 方法。

$p | ForEach-Object {$_.Kill()}

和 Where 方法

从 4.0 开始,支持使用方法语法的集合过滤。这允许在处理集合和 Where 时使用两种新方法。

详细了解这些方法

有多个重载时调用特定方法

在调用 .NET 方法时请考虑以下情况。如果一个方法接受一个对象,但有一个采用更具体类型的接口的重载,则将选择接受该对象的方法,除非该对象被显式强制转换为该接口。

Add-Type -TypeDefinition @'
   // Interface
   public interface IFoo {
     string Bar(int p);
   }
   // Type that implements the interface
   public class Foo : IFoo {
   // Direct member method named 'Bar'
   public string Bar(object p) { return $"object: {p}"; }
   // *Explicit* implementation of IFoo's 'Bar' method().
   string IFoo.Bar(int p) {
       return $"int: {p}";
   }
}
'@

这个例子选择了一个不太具体的 Bar 方法重载。

[Foo]::new().Bar(1)

object: 1

此示例将方法强制转换为接口 IFoo 以选择更具体的 Bar 方法重载。

([IFoo] [Foo]::new()).Bar(1)

int: 1

使用采用文件系统路径的 .NET 方法

每个进程支持多个运行空间。每个运行空间都有自己的当前目录。这与当前进程的工作目录 [.]:::.

不同

.NET 方法使用进程工作目录。利用的位置。此外,.NET 方法仅适用于本机文件系统路径,而不适用于 Path 对象。要将路径与 .NET 方法一起使用方法,您必须先将路径解析为文件系统的本机路径,然后再将路径传递给 .NET 方法。

另见

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了