可能重複:
C#: why does the string type have a .ToString() method爲什麼String.ToString()?
爲什麼有ToString
方法String
類(VB.NET)存在嗎?
String.ToString()
會不會是一個開銷,如果用它像
TextBox.Text.ToString()
可能重複:
C#: why does the string type have a .ToString() method爲什麼String.ToString()?
爲什麼有ToString
方法String
類(VB.NET)存在嗎?
String.ToString()
會不會是一個開銷,如果用它像
TextBox.Text.ToString()
ToString
方法在Object
上找到,其中String
繼承。 Object.ToString
的實現是打印typename。
public virtual string ToString() {
return this.GetType().ToString();
}
該類型String
重寫此方法以返回自身。
public override string ToString() {
return this;
}
代碼TextBox.Text.ToString()
有ToString
不必要的電話,但它是不可能會有這樣做的任何noticable性能的影響。
所有對象都有ToString()
,這樣對於任何對象:
可以調用obj.ToString()
不知道obj
可以調用obj.ToString()
,而不必擔心方法並不存在(通用日誌代碼是你可以這樣做,其中一個常見的例子)
對字符串進行調用ToString()
的開銷只有一個調用一個單行函數,所以幾乎肯定可以忽略不計。
ToString()
存在於從System.Object
派生的每個類中。是的,那也包括System.String
。
這可能有點多餘,documentation指出它將返回完全相同的實例。所以除了方法調用之外,沒有性能開銷。
一切都是一個對象(或可以作爲一個對象裝箱)。 object
定義了方法ToString
,ergo,string有一個ToString方法,因爲它是一個對象。
由於System.String
類,像任何其他類是從System.Object
類, 它從各種方法自動繼承等衍生的:
public virtual bool Equals(Object obj)
public virtual int GetHashCode()
public virtual string ToString()
從而使你比較,填寫表格使用對象,並打開OBJETS轉化爲人性化的字符串。