【发布时间】:2014-09-18 14:28:30
【问题描述】:
我有以下代码:
using System
public static class IntEx
{
/// <summary>
/// Yields a power of the given number
/// </summary>
/// <param name="number">The base number</param>
/// <param name="powerOf">the power to be applied on te base number</param>
/// <returns>Powers applied to the base number</returns>
public static IEnumerable<int> ListPowersOf(this int number, int powerOf)
{
for (var i = number; ; i <<= powerOf)
{
yield return i;
}
}
}
我已经在 Powershell(Windows 8) 中加载了 dll。我尝试通过以下方式使用它:
$test = 1.ListPowersOf(2)
应该返回@(1, 2, 4, 8, 16...)
相反,它说没有这种方法。
我尝试了以下方法:
[BaseDllNamespace]::ListPowersOf(1,2)
还是什么都没有。我在 IntEx 类中没有命名空间。
如何让它发挥作用
【问题讨论】:
-
C# 代码无法编译且无法运行。您在
using System的末尾缺少;,应该有一个using System.Collections.Generic;。并且代码导致无限循环。你可以用yield return (int)Math.Pow(number, powerOf);替换整个for循环。
标签: c# .net powershell extension-methods