-1
int myNumber = 10;
string formattedNumber = myNumber.ToString("0000"); // output will be "0010"
即,我們可以使用格式化ToString()
整數作爲像在上面的代碼。我有一個名爲myNewClass
的類,其中我在ToString()
之上,我的目標是使用重寫的ToString()方法獲得格式化的輸出。
public class myNewClass
{
public int MyProperty { get; set; }
public myNewClass(dynamic x)
{
MyProperty = x;
}
public override string ToString()
{
return MyProperty.ToString();
}
}
現在正在創建該類的對象爲:
myNewClass p = new myNewClass(10);
當我打電話ToString()
與格式化,然後它不會編譯:
var m = p.ToString("0000");//gives error that "no overloaded method Tostring() takes one argument."
所以我已經改變了函數簽名如下所示:
public override string ToString(string format)
{
return MyProperty.ToString(format);
}
再次導致相同:No suitable method found to override
我的問題是,我如何能實現重寫的ToString()的格式化參數
你的'myNewClass','System.Object'的基類沒有定義'public virtual string ToString(string)'方法,所以你不能「覆蓋」它。坦率地說,你顯示的代碼片段甚至不應該編譯。嘗試從「ToString(string)」方法中刪除「覆蓋」規範。 –
Blindy回答了你的問題。您應該考慮實施[IFormattable](https://msdn.microsoft.com/en-us/library/system.iformattable.tostring(v = vs.110).aspx)以使用[string.Format]中的格式化值(https://msdn.microsoft.com/en-us/library/System.String.Format(v=VS.110).aspx)。 –