我的 Formatter
你如何将 DateTime 对象转换成 String?这是我的答案:
// 那个"?"不是乱码呦!这个相当
// 于写Nullbale<DateTime> birthday...
DateTime? birthday = new DateTime(2007, 1, 1);
DateTime? birthday2 = null;
string s = Formatter.New("d") ¦ birthday; // s = "2007-1-1"
string s2 = Formatter.New("d") ¦ birthday2; // s2 = ""
string s3 = Formatter.New("d", "不详") ¦ birthday2; // s3 = "不详"
怎么样,是不是很酷? 其实 Formatter 的实现相当的简单,下面是全部源代码
public class Formatter
{
private string _fmt = "";
private string _nullString = "";
public Formatter(string fmt, string nullString)
{
_fmt = fmt;
_nullString = nullString;
}
public static Formatter New(string fmt)
{
return new Formatter(fmt, "");
}
public static Formatter New(string fmt, string nullString)
{
return new Formatter(fmt, nullString);
}
public static string operator ¦(Formatter lhs, Nullable<DateTime> rhs)
{
if (rhs.HasValue)
{
return rhs.Value.ToString(lhs._fmt);
}
else
{
return lhs._nullString;
}
}
} // class Formatter
其实就是重载了竖线操作符而已。其实我想重载“<<”来着,可惜 .Net 规定“<<”操作符的右操作数必须是 int,真TNND气死我了,杀死比尔。
没有评论:
发表评论