首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于对象实例.ToString()的有关问题

2012-03-22 
关于对象实例.ToString()的问题在好多位同行的.NET代码中我总是很多的发现ToString()的使用.比如inti1234

关于对象实例.ToString()的问题
在好多位同行的.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=123;
int j=123;
if (i ==j)
{
//i和j是相等的
}
DateTime dt1=DateTime.Today;
DateTime dt2=DateTime.Today;
if (dt1==dt2)
{
//dt1和dt2是相等的;
}

是可以的啊,类型一样就可以啊。
[解决办法]
先占个座..
[解决办法]
我个人认为只要类型相匹配就应该没有问题,至于哪个速度快,我认为还是原形快。
[解决办法]
CompareTo方法,Equals方法,或用==, <=,!=,> =

习惯优先使用==后Equals,最后CompareTo

至少不会把能使用这些比较的转化为string再比较
[解决办法]
貌似自己也这样写过!~~~
[解决办法]
如果类型相同的话,我一般是用两个变量直接比较的,你上面所说的情况,个人感觉不是好的方法
[解决办法]
垃圾代码而已~
[解决办法]
两个变量进行比较时,一般只要类型相同的情况下,我都是直接进行比较的。
感觉LZ列出来的那种写法有点多此一举。
[解决办法]
值类型直接比较是毫无疑问的

DateTime比较特殊,它是个结构(而不是对象)
比较两个结构是否相等要分具体情况

比如Color,两个表示同样颜色的Color,直接比较可能并不相等
因为可能有不相等的字段,比如Name
可以ToArgb得到数字进行比较
DateTime可以用Compare或CopareTo方法

一般都可以用Equals方法

[解决办法]
//两个变量进行比较时,一般只要类型相同的情况下,我都是直接进行比较的。
你自己构造一个红色Color,直接与Color.Red用==比较,是不相等的
[解决办法]
完全没那个必要啊。


[解决办法]
对于.Net框架中的一些核心类型,比如bool,int等,两种方式基本差不多...

ToString()方法,默认情况下方法返回的是类型的全名(this.GetType().FullName.ToString()),还有一种常见的做法就是重写该方法使其返回一个表示对象状态的字符串..int和bool等一些核心类型就是重写了这个方法,所以才能返回他们值所对应的字符串...
[解决办法]
所有比较两个变量,用ToString的方法也只能对这些基本类型可以用(但其实没那个必要)..

正确的做法还是 "Equals方法,或用==, <=,!=,> = "诸如此类的方法..
[解决办法]
不仅资源开销的问题,还有可能是错的
还举Color的例子,Color.ToString()得到的可能是名称(如果有的话),也可能是ARGB分量组成的字符串
[解决办法]
TO:还举Color的例子,Color.ToString()得到的可能是名称(如果有的话),也可能是ARGB分量组成的字符串



同意viena(维也纳nn-下潜15米,潜望镜升起)MM ..

是的,想得到值,可以重写一下ToString方法..但如果是为了作比较,为免有点多此一举了..

呵呵..
[解决办法]
TO:我只是想提醒一下能不用ToString()的最好不用ToString(),因为这也是一个资源开销.
起码我是注意这种情况的,不是不得已不用ToString()来比较.

楼主的本意大家当然明白...

^_^
[解决办法]
实在不行重载 ==运算符
toString实在非明智之举啊
[解决办法]
类型一样就可以比较,没有必要非转换成string 类型
[解决办法]
TO:我只是想提醒一下能不用ToString()的最好不用ToString(),因为这也是一个资源开销.
起码我是注意这种情况的,不是不得已不用ToString()来比较.

我也是逼不得已才用tostring来比较的,能少用就用吧,资源开销
[解决办法]
小白一般那样写
[解决办法]
类型一样的话可以直接比较!

[解决办法]
學習啊 ﹗
[解决办法]
估计是惯性使然,哈哈
[解决办法]
如果能知道内存的远行机制就能理解,可是,微软的C#不让你知道,不象C++什么都可以用内存的存储机制来理解

热点排行