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;
答案 0 :(得分:7)
在扩展方法中添加公共访问说明符应该可以解决问题。
public static class NumberExtentions
{
public static string Format(this int integer)
{
return string.Format("{0:n0}", integer);
}
}
答案 1 :(得分:1)
要回答主题中的问题 - 是的,扩展方法适用于int
,int
没有什么特别之处。事实上,他们也会处理整数文字 - 5.Format()
应该可以正常工作。
你遗漏了我怀疑你问题的原因,即命名空间。您的代码中可能有很多地方,尤其是您的依赖库,它们将扩展方法添加到int
,并且您不希望必须全部导入它们(导致潜在的冲突),因此您必须添加{{ 1}}语句到您的代码,指向using
的命名空间。
这与添加对类的引用没什么不同,除了Visual Studio的intellisense通常非常适合突出显示一个未知类并提供为它添加NumberExtentions
,但它不会对扩展方法有帮助。
只需添加一个使用声明就可以了。