重载ToString()用于类中的int元素
本文关键字:int 元素 用于 ToString 重载 | 更新日期: 2023-09-27 18:13:57
我想覆盖ToString()
方法的int(这是一个类的一部分),这样,如果int的值是0,ToString()
应该返回一个空字符串""
.这可以做到吗?
创建一个
很简单public string AmountToString {
get { if (Amount != 0) return Amount.ToString(); else return ""; }
}
我只是想看看它是否可以在原始类型
三种主要方法:
使用(自定义)格式提供者
所以你可以使用i.ToString(formatprovider);
编辑我想我找到了一个自定义格式字符串,它与默认的。net数字格式提供程序一起工作:
i.ToString("0;-0;"); // works
另一个例子摘自";"部分分隔符:
i.ToString("##;(##);**Zero**"); // would return "**Zero** instead
扩展方法提示:
您可以下载Format Utility,该应用程序使您能够将格式字符串应用于数字或日期和时间值,并显示结果字符串。
public static string ToStringOrEmpty(this int i)
{
return (0==i)? string.Empty : i.ToString();
}
访问器辅助:
class X
{
int member;
public string getMember() { return (0==member)? string.Empty : member.ToString();
}
很遗憾没有。您需要访问类代码来覆盖任何方法或属性,包括ToString
方法。因为int
是一个基本类型,你不能改变类的代码(不容易也不可靠)。
public static class IntExtensions
{
public static ToStringOrEmpty(this int value)
{
return value == 0 ? "" : value.ToString();
}
}
您可以在相同的命名空间中定义扩展方法并覆盖int类的行为。示例示例:
void Main()
{
Console.WriteLine(5.Convert()); // Prints "5"
Console.WriteLine("Empty String" + 0.Convert());
}
// Define other methods and classes here
public static class ExtMethods{
public static string Convert(this int value)
{
return value == 0 ? string.Empty : value.ToString();
}
}
除非它是那个类的方法,否则你不能改变int的ToString()
实现。
- 在类上创建一个方法
- 为
int
创建一个扩展方法,但是,你必须管理调用它(与ToString
相反)。 - 另一个选择是在int周围创建一个包装器,使用隐式转换操作符等,实现
ToString
,并在类中使用它。 - 创建或查找可以传递给
ToString
的自定义格式提供程序。
您必须重写(您的)类本身的ToString方法,当它被调用时,只需返回string。
该字段为0时为空。return a+i==0?string.Empty:i+...
如果你写一个继承了int的类型,但是不幸的是int是一个密封类,所以你不能
我认为,最好编写一些扩展方法来代替…
public static string ToMyString(this int input)
{
return input == 0 ? string.Empty : input.ToString();
}
我以前从未听说过这样做的方法,在搜索时也没有找到。您可以使用一个自定义类来保存一个int类型,并拥有自己的覆盖toString()。这有关系吗?还是必须是整型?
也可以用
x == 0 ? "" : x.toString();
这样你就得到"如果是0或者tostring
你不能重写int的ToString()方法,因为你不能访问代码,但你可以在int类上创建一个扩展方法,使用不同的方法名,如ToString2(),当int的值为零时,你可以返回空字符串,否则你可以返回int变量的正常值。
关于如何在现有类上创建扩展方法的参考,可以参考下面的链接:
http://msdn.microsoft.com/en-us/library/bb311042.aspx为Int创建Extension
public static class Ext
{
public static string ToMyString(this int myInt)
{
return myInt == 0 ? "" : myInt.ToString();
}
}
您要做的是重写您想要实现其ToString()的类。与大多数基类型一样,int类型是一个密封类。
可以创建一个封装int的类,然后实现强制转换操作符并覆盖ToString()方法。
对于这么小的东西,这听起来像是很多工作,但这就是要走的路!
这是你的类(对不起,名字很糟糕):
struct b
{
int myInt;
public override string ToString()
{
return myInt != 0 ? myInt.ToString() : "";
}
public static implicit operator int(b d)
{
return d.myInt;
}
// User-defined conversion from double to Digit
public static implicit operator b(int d)
{
return new b { myInt = d };
}
}