ToString的默认数字格式

8

是否可以定义一个默认数字格式,每当我将整数(或双精度等)转换为字符串而不指定格式字符串时使用?

C#示例:

int i = 123456;

string s = "Hello " + i;
// or alternatively with string.Format without format definition
string s = string.Format("Hello {0}", i);

ASP.NET Razor示例:

<div>
    Hello @i
</div>

我认为所有这些代码行都隐式地使用默认的Int32ToString()方法。毫不奇怪,所有这些代码行的结果都是"Hello 123456",但我想要"Hello 123,456"
那么我能指定默认情况下应该使用"N0"(至少对于integer)吗?
我已经找到了问题Set Default DateTime Format c#-看起来不错,但它对我处理数字没有帮助。
编辑:我知道我可以编写一个扩展方法,在整个应用程序中使用它,但这不是我要找的。我想找到一个属性(可能在CultureInfoNumberFormatInfo中某个隐藏的位置),该属性当前设置为"G"并由默认的Int32.ToString()实现使用。

你能否像示例URL使用DateTimeFormat一样,对cultureInfo.NumberFormat进行操作? - Tom Brown
1
这可能有点太宽泛了。根据上下文,这是可能的。对于MVC,您可以创建一个DisplayTemplate并使用@Html.DisplayFor。对于某些WinForms控件,您可以在类属性上指定属性。 - user247702
@TomBrown 不是的,这就是我发出问题的原因。 :-) - fero
相关:https://dev59.com/FkvSa4cB1Zd3GeqPenhh - user247702
@DmitryBychenko 这是不可能的。InvalidOperationException:实例是只读的。 - user247702
显示剩余3条评论
5个回答

1

好主意,但不幸的是,这对我没有帮助,因为 CultureInfo 不是问题所在。使用了正确的区域设置,但默认的 ToString 实现使用了 G 格式,而不是我想要的 N0 格式。 - fero
@fero 很抱歉,这是不可定制的。它始终为 G。而 CultureInfoG 格式没有太大影响(您可以更改分隔符,但无法更改小数位数)。 - Kamil Szot

0
你可以将系统的toString()方法重写到你的类中,如下所示:
 public override string ToString()
    {
    int i = 123456;
        string s = "Hello " + i;
      return string.Format("Hello {0}", i);
    }

1
我没有类。我想为每个“整数”指定默认格式。 - fero
2
除了@fero的评论之外,即使他想要,他也无法对int进行子类化。 - RB.

0

你可以使用扩展方法

public static class MyExtensions
{
    public static string ToDefaultFormatString(this int i)
    {
        //Staf
    }
}

你的代码看起来像这样

int i = 123456;

string s = "Hello " + i.ToDefaultFormatString();

但这并不是他想要实现的目标 - 他很清楚自己想要控制 int 上 ToString() 的结果。 - RB.

0

由于您正在尝试修改没有类的原始类型的功能,因此无法覆盖ToString()方法。

但是,您可以创建一个扩展方法。

namespace System
{

    public class IntExt
    {
        public string ToStringN0(this int i)
        {
            return i.ToString("N0");
        }
    }

}

然后使用

int i = 5000;
Console.WriteLine(i.ToStringN0());

这个示例将类放在System命名空间中,以便通过应用程序访问。


-1

1
不,这对我没有任何帮助。我已经知道"G"格式是默认使用的。但他们没有提到如何指定另一个默认格式。 - fero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接