gpt4 book ai didi

powershell - 在powershell中键入完全限定的类型名称?

转载 作者:行者123 更新时间:2023-12-03 16:45:00 25 4
gpt4 key购买 nike

我想减少打字 System和其他根命名空间,例如

[string] $ComputerName = [Environment]::MachineName

对比
[System.String] $ComputerName = [System.Environment]::MachineName

另一个例子:
[Net.Dns]::GetHostEntry("192.168.1.1")

对比
[System.Net.Dns]::GetHostEntry("192.168.1.1")

输入 System时有什么原因和具体情况吗?并且需要类似的父命名空间?

我经常想知道为什么会有 System毕竟命名空间,因为一切都在该命名空间内,所以如何处理该命名空间?这是胡说八道;什么是术语 System应该是什么意思?这里与操作系统无关。但是对于 NET 框架中的所有内容。

我假设调用静态方法时可能会出现异常,但我不知道 C# 所以无法自己回答这个问题。

最佳答案

有点困惑的顺序:

it's a nonsense; what is the term System supposed to mean anyway?



有问题的“系统”是 .NET 运行时和框架。据我所知,最初的想法是,不随 .NET 一起提供的代码将属于不同的命名空间——但是在 .NET 之上构建的多个 Microsoft 编写的组件已经使用了 System父命名空间 - 包括构成 PowerShell 本身的所有 API。

I often wonder why is there [a] System namespace after all since everything is inside that namespace so what the deal with that namespace?



并非“一切”都在 System 内命名空间,但如上所述,运行时或基类库附带的所有内容都是 - 这正是 PowerShell 自动解析类型文字的原因,即使您省略 System.来自限定的类型名称 - PowerShell 正在尝试帮助您减少输入

Are there any reasons and specific situation when typing System and similar parent namespaces is required?



是 - 当父命名空间不是 System .

想到的第一个示例是 Windows 上 Win32 注册表 API 的 .NET 包装类:
$HKLM = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Default)

现在,对于实际问题:

I want to reduce typing System and other root namespaces



您不能将自定义命名空间前缀(如 System)添加到 PowerShell 的名称解析方法,但您可以在 PowerShell 5 及更高版本中声明特定命名空间中类型名称的自动解析,使用 using namespace directive .

using namespace :
[System.Net.Dns]::GetHostEntry("192.168.1.1")

using namespace :
using namespace System.Net

[Dns]::GetHostEntry("192.168.1.1")

在脚本中使用时,任何 using指令必须在文件中的其他任何内容之前,包括 param堵塞。
using namespace指令也可以在交互式 session 中工作,前提是您将其作为单独的语句发出:
PS> using namespace System.Net 
PS> [Dns] # still works!

关于powershell - 在powershell中键入完全限定的类型名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60366288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com