《Effective C#》Item 5:提供一个有意义的ToString函数

原创 2006年06月18日 16:48:00

在编写自定义类型的时候,即使我们不写ToString函数,系统也会自动提供ToString函数,例如:

    public class clsUserInfo

    {

        private string strUserName;

        ……

    }

 

不过系统所提供ToString函数,并不做太多的事情,无法真实的反映当前对象的一些属性,就如上这段代码,调用ToString返回的结果和GetType后转换成String是一样的。那么这样的返回值对于调用者来说没有太多的意义。

 

为了能提供一个有意义的ToString函数,则需要重载ToString函数来实现一个面向此对象的ToString函数。举例说明,对于上面clsUserInfo这个类型,如下这种写法会使ToString函数更有意义。

    public class clsUserInfo

    {

        private string strUserName;

        ……

        public override string ToString()

        {

            return string.Format( "User name:{0}", strUserName );

        }

    }

 

提供一个有意义的ToString函数,对于进行调试或者发布此类都是很有用,因为这种做法是最简便的方法,相对于访问类的成员属性然后再组合字符串不过大家写代码的时候,包括我在内,往往忽略了去提供一个有意义的ToString函数,这点看来要在今后的编码中进行改善。

 

除了重载系统提供的ToString函数外,在C#中还可以继承IFormattable接口,来提供更复杂的ToString函数,至于这方面,我不想多说,因为继承了接口,提供的ToString函数会有很多变化,这也许只有到真正的应用当中才能更深刻的体会到。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

给函数和变量取一个有意义的名字

为什么要给函数和变量取一个有意义的名字? 1. 代码写出来是给以后的自己和别人看的,易于理解的变量名可以更好的阅读,并且可以看出编码者的个人修养和编程功底; 2. 好的变量名字有利于提高自己英语水平(...
  • fjays
  • fjays
  • 2015-02-28 14:17
  • 158

《Effective C++》item5:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls.)

阅读本条款内容又有了不少新的收获,虽然本条款比较简单。有些在以往学习c++的过程中一成不变的看法在这里得到颠覆! Questions: (1)空类真的是empty class吗?( Is empt...

《Effective+C#》Item+9:区别和认识四个判等函数(转载)

Net有四个判等函数?不少人看到这个标题,会对此感到怀疑。事实上确是如此,.Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个...

More Effective C++之Item M5:谨慎定义类型转换函数

C++编译器能够在两种数据类型之间进行隐式转换(implicit conversions),它继承了C语言的转换方法,例如允许把char隐式转换为int和从short隐式转换为double。因此当你把...

《Effective C++》item25:考虑写出一个不抛异常的swap函数

std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: [cpp] view plai...

《Effective C++》读书笔记之item25:考虑写出一个不抛异常的swap函数

1.STL中有swap()函数可以将两个对象的值相交换,定义类似于: namespace std{ template void swap(T&a, T& b){ T temp(a...

分享毕业实习学子“ERP实施工程师”总结,都是肺腑之言——知识是体现人的价值,学校学习的每一个课程学科都是有意义

丁老师,这是我刚写完的实习报告,特地给您一份,可以让你了解一个信管毕业生的真实想法,希望对你在信管的教育上有帮助。---信管1102 刘贻富     上面是刚刚收到(20140427)的一封学生邮件...

探索 Kubernetes 做为 Mesos 的一个Framework 是否有意义

在寻找容器编排平台时,开源社区提供一些如 Kubernetes, Marathon-Mesos 或 Docker Swarm 等可行的选择。在很多寻找运行在线负载原生云的用户中,Kubernete...

More Effective C++之Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异

从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类 // 在这里并不重要 void f1(Widge...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)