PowerShell Add-Type的行为不符合预期

时间:2011-10-04 06:14:38

标签: powershell

任何人都可以解释为什么以下(使用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抱怨ExceptionConvertMath“在当前上下文中不存在”?

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;
    }
}
"@

1 个答案:

答案 0 :(得分:2)

在你的第二个代码中,你必须添加

Add-Type @"
using System;

public class BitValueChecker
{
....

与c#代码类似。