日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

您不能不知的ToString()方法

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 您不能不知的ToString()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1.1 摘要

???? 相信大家對ToString()方法再熟悉不過了,由于該方法是.NET程序中最常用的方法之一,我們除了可以直接調用ToString()方法之外,.NET中的某些方法也隱式調用ToString()方法(WPF,Windows Form和Silverlight等)。

1.1.2 正文

????? 首先讓我們了解一下ToString()的由來,它是由Object類提供一個虛的方法,ToString()方法返回一個字符串顯示調用該方法對象的類型,Object類中實現如下。

????? 現在我們知道Object類提供的是一個虛的ToString()方法,表明.NET也提供我們重寫ToString()方法,接來下讓我們定義一個Customer類,然后再使用Console.WriteLine()方法隱式調用Customer類的ToString()方法輸出,注意我們現在還沒有重寫ToString方法,所以我們調用的是Object類的ToString()方法。

?

圖1輸出類型字符串

重新ToString()方法

????

???? 通過上圖我們可以很明確的說明了在沒有重新ToString()方法時,我們調用的是父類Object的ToString()方法。不但它的輸出不怎么make sence,而且它并沒有輸出我們需要的值,那么接下來讓我們重寫ToString()方法。

?

?

??? 上面我們重寫了ToString()方法返回Name,Revenuehe和Tel屬性,接著我們使用WriteLine()方法隱式調用ToString()方法(.NET提供顯式和隱式調用ToString()的方法,如:Console.WriteLine、String.Format和.NET控件等)。

??? 雖然簡單的ToString()方法很多時候已經可以滿足我們的需求,但有時候我們還需要功能更強的方法來格式化輸出字符串。(如:電話號碼,日期和郵編等格式)

??? 要實現上述格式,我們可以通過實現IFormattable 接口來解決這個問題。 IFormattable 接口包含了一個重載的ToString()方法,它允許我們為類型指定某種格式信息。當我們需要為類型創建不同形式的字符串輸出時,實現這個接口就顯得很有用了。

  • 實現IFormattable接口

    ?

    ??? 現在我們修改一下我們的Customer類,讓它實現IFormattable接口,然后重寫ToString()方法,實現如下:

    ?


  • 圖2 IFormattable的實現

    使我們設計符合OCP

    ??? 現在我們的Customer類實現了IFormattable接口,然后重寫了ToString()方法,接著提供三種格式化類型輸出,OK現在我們的輸出字符串有更好的自定義格式了,但用戶需求的格式是在不斷的變化,我們無法估計和預知用戶需求的輸出格式,難道每當遇到不符合用戶要求的格式我們都要在switch中添加嗎?我們的確可以這樣做,這種做法看上去是直截了當,但這不符合設計模式的OCP原則。幸運的是.NET提供了符合OCP原則的實現方法,通過實現IFormattable接口使得實現該接口的類對StringFomat()修改關閉,當實現ICustomFormatter接口的類對StringFomat()擴展開放。

    “Software entities (classes, modules, functions, etc.) should be open for extension,?

    but closed for modification [Martin, p.99]”

    ??? 現在我們添加自定義類CustomFormatProvider,通過它可以擴展Customer的輸出字符串的格式類型,而且避免了對Customer類的修改遵守了OCP,然后再實現接口IFormatProvider和ICustomFormatter,在Format()方法中實現字符串輸出格式。

    圖4自定義字符串格式

    ?

    圖5自定義格式實現框架

    ??? 上面的GetFormat()方法創建一個實現ICustomFormatter接口的對象,而且通過重寫Format()方法來自定義輸出字符串格式,通過傳遞不同format參數以便指定不同格式選項。

    1.1.3 總結

    ???? 不管一個類是否實現了IFormattable接口,我們都可以為其創建 IFormatProvider 和 ICustomFormatter 的實現類。因此即使一個類的原來沒有提供合理的ToString()行為,我們仍然可以為其提供格式化支持。當然,作為一個類的外部訪問者,我們只能通過訪問其中的公有屬性和數據成員來構造字符串。雖然編寫格式提供者類(分別實現IFormatProvider 和 ICustomFormatter)需要很多工作,且其目的僅僅是為了得到一個字符串。但是,一旦使用了這種方式來實現我們自己定義的字符串輸出,它們將在.NET 框架的各個地方得到支持。

    ??? 現在,再讓我們回到類這一角色上來。重寫 Object.ToString()是為類提供字符串表示的最簡單方式。每當我們創建一個類型時,都要提供該方法。它應該是我們的類型最明顯、最常用的一種表示。而且只有在一些比較少的情況下,當我們期望為類型提供更復雜的輸出格式時,才應該實現IFormattable 接口。它為“類型的用戶定制類型的字符 串輸出”提供了一種標準的方式。如果我們沒有做這些工作,用戶就要自己來實現自定義格式化器。那樣的做法需要更多的代碼,因為用戶處于類外,無法訪問對象 的內部狀態。

    轉載于:https://www.cnblogs.com/rush/archive/2011/05/22/ToString_NET.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的您不能不知的ToString()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 午夜在线成人 | 亲子乱aⅴ一区二区三区 | 国产成人在线电影 | 欧美日韩在线高清 | 国产精品久久久久久久 | 风韵少妇spa私密视频 | 国产精品久久久久久久久久妞妞 | 亚洲码中文 | 国产一区亚洲二区 | 精品人妻av在线 | www一区二区三区 | 福利社区一区二区 | 亚洲蜜臀av乱码久久精品蜜桃 | 日本乱轮视频 | 操xxxx| 刘亦菲一区二区三区免费看 | 国产乱国产乱老熟 | 日韩精品一区二区三区四区 | 日日摸日日添日日碰9学生露脸 | 免费人成在线 | 成人亚洲精品 | 久久成人a | 高h全肉污文play带道具 | 国产又大又黄又粗 | 国产精品毛片一区二区在线看 | 性史性农村dvd毛片 日韩精品在线视频观看 | 亚洲无卡视频 | 国产一区二区三区免费观看视频 | 青青艹av | 添女人荫蒂视频 | 亚洲成人不卡 | 午夜在线免费观看视频 | 久久99久久98精品免观看软件 | 亚洲免费一区二区 | 欧美一区二区区 | 亚洲激情成人网 | 天降女子| 国产不卡一 | 欧美成人91 | 日本乱论视频 | 在线亚洲天堂 | 亚洲特黄 | 日韩国产欧美精品 | 宅男的天堂 | 动漫美女被吸奶 | 亚洲精品一区二三区不卡 | 日本在线高清视频 | 日av在线播放 | 天天操好逼| japan高清日本乱xxxxx | 女人被灌满精子 | 天天拍夜夜拍 | 夜夜夜夜骑 | 强行侵犯视频在线观看 | 亚洲AV无码国产精品播放在线 | 欧美色啪| 日韩免费在线观看视频 | 2019自拍偷拍 | 6699嫩草久久久精品影院 | 成年男女免费视频 | 久久对白| 国产一区不卡在线观看 | 天天干天天综合 | 欧美视频区 | 日韩欧美国产精品 | 蜜桃成人在线视频 | 亚洲色大成网站www www.97ai.com | 国产福利精品在线观看 | 加勒比不卡视频 | 久久久嫩草 | 粗大的内捧猛烈进出视频 | 国产swag在线观看 | 超碰人人艹 | 在线看的av网站 | 久久精品国产亚洲a | 国产乱码精品一区二区三区不卡 | 国产午夜精品一区二区理论影院 | 91毛片在线观看 | 免费麻豆| 男生和女生操操 | 岛国av动作片 | 久久影 | 日韩av手机在线 | 青青草视频播放器 | 奇米成人网 | 在线观看成人av | 狠狠老司机 | 国产精品一区二区久久久 | 美女国产免费 | 亚洲成人一二区 | 精品国产91久久久久久久妲己 | 国产福利小视频在线 | 亚洲777 | 姑娘第5集在线观看免费 | 亚洲欧美一区二区三 | 国产精品亚洲专区无码牛牛 | 丰满少妇xbxb毛片日本 | 少妇高潮淫片免费观看 | 特级西西人体444www |