在好多位同行的.NET代码中我总是很多的发现ToString()的使用.比如
int i=1234; string str=i.ToString();
DateTime dt=DateTime.Now; string str=dt.ToString();
因为我们要得到值的一个字符串的表示就这么用了.比如用来显示这个值,这很正常.可是下在的这几种情况为什么使用呢:
int i=123;
int j=123;
if (i.ToStirng()==j.ToString())
{
//i和j是相等的
}
--------
DateTime dt1=DateTime.Today;
DateTime dt2=DateTime.Today;
if (dt1.ToString()==dt2.ToString())
{
//dt1和dt2是相等的;
}
等等这种情况吧,
我就不理解了,为什么一个整数的比较,或一个时间类型的比较,或其它一个明确类型的值的比较,什么都一定要把它们ToString()了再比较呢?
我知道一个类型如果有IConvertible, IComparable, IEquatable等的实现,这样我们总可以通过CompareTo方法,Equals方法,或用==,<=,!=,>=来比较,当然也可以ToString()后通过字符串来比较.
那么哪一个更合适或更实用请大家说说自已的说法吧.
也说说有这种类似情况的时候,你是如何来使用的?
请大家积极的发言:)
int i=1234; string str=i.ToString();
DateTime dt=DateTime.Now; string str=dt.ToString();
因为我们要得到值的一个字符串的表示就这么用了.比如用来显示这个值,这很正常.可是下在的这几种情况为什么使用呢:
int i=123;
int j=123;
if (i.ToStirng()==j.ToString())
{
//i和j是相等的
}
--------
DateTime dt1=DateTime.Today;
DateTime dt2=DateTime.Today;
if (dt1.ToString()==dt2.ToString())
{
//dt1和dt2是相等的;
}
等等这种情况吧,
我就不理解了,为什么一个整数的比较,或一个时间类型的比较,或其它一个明确类型的值的比较,什么都一定要把它们ToString()了再比较呢?
我知道一个类型如果有IConvertible, IComparable, IEquatable等的实现,这样我们总可以通过CompareTo方法,Equals方法,或用==,<=,!=,>=来比较,当然也可以ToString()后通过字符串来比较.
那么哪一个更合适或更实用请大家说说自已的说法吧.
也说说有这种类似情况的时候,你是如何来使用的?
请大家积极的发言:)
int j=123;
if (i ==j)
{
//i和j是相等的
}
DateTime dt1=DateTime.Today;
DateTime dt2=DateTime.Today;
if (dt1==dt2)
{
//dt1和dt2是相等的;
}是可以的啊,类型一样就可以啊。
比较两个结构是否相等要分具体情况比如Color,两个表示同样颜色的Color,直接比较可能并不相等
因为可能有不相等的字段,比如Name
可以ToArgb得到数字进行比较
DateTime可以用Compare或CopareTo方法一般都可以用Equals方法
你自己构造一个红色Color,直接与Color.Red用==比较,是不相等的
起码我是注意这种情况的,不是不得已不用ToString()来比较.
还举Color的例子,Color.ToString()得到的可能是名称(如果有的话),也可能是ARGB分量组成的字符串
起码我是注意这种情况的,不是不得已不用ToString()来比较.楼主的本意大家当然明白...^_^
toString实在非明智之举啊
起码我是注意这种情况的,不是不得已不用ToString()来比较.我也是逼不得已才用tostring来比较的,能少用就用吧,资源开销