扩展方法不适用于int?

时间:2018-04-28 05:40:04

标签: c# .net

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;

2 个答案:

答案 0 :(得分:7)

在扩展方法中添加公共访问说明符应该可以解决问题。

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

See Dot Net Fiddle

答案 1 :(得分:1)

要回答主题中的问题 - 是的,扩展方法适用于intint没有什么特别之处。事实上,他们也会处理整数文字 - 5.Format()应该可以正常工作。

你遗漏了我怀疑你问题的原因,即命名空间。您的代码中可能有很多地方,尤其是您的依赖库,它们将扩展方法添加到int,并且您不希望必须全部导入它们(导致潜在的冲突),因此您必须添加{{ 1}}语句到您的代码,指向using的命名空间。

这与添加对类的引用没什么不同,除了Visual Studio的intellisense通常非常适合突出显示一个未知类并提供为它添加NumberExtentions,但它不会对扩展方法有帮助。

只需添加一个使用声明就可以了。