PowerShell 添加类型未按预期运行

发布于 2024-12-07 15:27:40 字数 1010 浏览 1 评论 0原文

任何人都可以解释为什么以下(使用 System 命名空间限定符)有效:

Add-Type @"
public class BitValueChecker
{
    public static bool IsBitSetZeroBased(uint value, uint bitNumber)
    {
        if (bitNumber < 0 || bitNumber >= 32)
            throw new System.Exception("Invalid bit number must be >= 0 and <= 31");

        uint checkValue = value & System.Convert.ToUInt32(System.Math.Pow(2, bitNumber));
        return checkValue > 0;
    }
}
"@

而下面的(基本相同)代码片段会导致 PS 抱怨 ExceptionConvert 和 Math “在当前上下文中不存在”?

Add-Type @"
public class BitValueChecker
{
    public static bool IsBitSetZeroBased(uint value, uint bitNumber)
    {
        if (bitNumber < 0 || bitNumber >= 32)
            throw new Exception("Invalid bit number must be >= 0 and <= 31");

        uint checkValue = value & Convert.ToUInt32(Math.Pow(2, bitNumber));
        return checkValue > 0;
    }
}
"@

Can anyone explain why the following (using the System namespace qualifer) works:

Add-Type @"
public class BitValueChecker
{
    public static bool IsBitSetZeroBased(uint value, uint bitNumber)
    {
        if (bitNumber < 0 || bitNumber >= 32)
            throw new System.Exception("Invalid bit number must be >= 0 and <= 31");

        uint checkValue = value & System.Convert.ToUInt32(System.Math.Pow(2, bitNumber));
        return checkValue > 0;
    }
}
"@

while the below (essentially identical) snippet causes PS to complain that Exception, Convert and Math "do not exist in the current context"?

Add-Type @"
public class BitValueChecker
{
    public static bool IsBitSetZeroBased(uint value, uint bitNumber)
    {
        if (bitNumber < 0 || bitNumber >= 32)
            throw new Exception("Invalid bit number must be >= 0 and <= 31");

        uint checkValue = value & Convert.ToUInt32(Math.Pow(2, bitNumber));
        return checkValue > 0;
    }
}
"@

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最初的梦 2024-12-14 15:27:40

在第二个代码中,您必须

Add-Type @"
using System;

public class BitValueChecker
{
....

在 ac# 代码中添加 Like 。

In your second code you have to add

Add-Type @"
using System;

public class BitValueChecker
{
....

Like in a c# code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文