是否可以实现ToString Override方法

时间:2014-11-01 06:35:23

标签: .net vb.net tostring

有什么方法可以为.ToString添加方法吗?如果不是全部.ToString,则更具体地说:

For Each Client as DataRow in DT.Rows
    Msgbox(Client.Item("first_name").ToString.**ProperCase**)
Next

我想向.ProperCase添加ToStringStrConv(Client.Item("first_name").tostringvbProperCase)

这可能吗?

1 个答案:

答案 0 :(得分:1)

ToString是一种方法。因此,您无法为其添加方法,但您可以向其中一个类添加方法。

您可以在System.String类或System.Object类上编写扩展方法。只要签名不同,您也可以重载内置方法。你不能写一个新的ToString(),但你可以写一个ToString(bool)来区分它。

一些替代方案:

  1. 创建一个具有值ProperCase的枚举类型,并在System.Object上写一个重载的扩展方法ToString(ToStringOpts)

    Client.Item("first_name").ToString(ProperCase)
    
  2. 要链接的System.String上的扩展方法ProperCase()(流利的语法):

    Client.Item("first_name").ToString.ProperCase()
    
  3. System.Object上的扩展方法ToStringProperCase(),因此您只需要一个方法调用:

    Client.Item("first_name").ToStringProperCase()
    
  4. 扩展方法文档:

    http://msdn.microsoft.com/en-us/library/bb384936.aspx

    我是C#的家伙,所以VB.NET的人帮助我,但总体思路是:

    <Extension()>
    Public Function ToStringProperCase(ByVal s As String) As String
         Return String.Concat(s.Substring(0,1).ToUpper(), s.Substring(1).ToLower())
    End Function