扩展方法不适用于INT


public static class NumberExtensions
{
    static string Format(this int integer) // Write one for int too, just incase :')
    {
        return string.Format("{0:n0}", integer);
    }
}

调用以下代码告诉我方法Format不存在。

idItemsFinished.Format()

这是变量

var idItemsFinished = Program.IdItemsProcessed;

这只是一个int。

public int IdItemsProcessed;

添加 public 访问扩展方法的访问说明器应解决问题。

public static class NumberExtentions
{
    public static string Format(this int integer) 
    {
        return string.Format("{0:n0}", integer);
    }
}

请参阅点网小提琴

回答主题中的问题 - 是的,扩展方法确实在int上使用,int没有什么特别的。实际上,它们也将使用整数文字 - 5.Format()应该很好。

您已经忽略了我怀疑的是您的问题的原因,即名称空间。代码中可能有数十个位置,尤其是您的依赖库中,它们将扩展方法添加到int,并且您不必一定会导入所有内容(导致潜在的冲突(,因此您必须在代码中添加using语句。指向NumberExtentions的名称空间。

这与添加对类别的参考没有什么不同,除了视觉工作室的智能素质通常在突出一个未知类别和为您添加using的授权方面非常好,但是它对扩展不那么有用方法。

只需添加一个使用语句,您可能会很好。