2012-12-11 2 views

ответ

5

Это не делает ничего, из ILSpy:

public override string ToString() 
{ 
    return this; 
} 

Но, может быть, он хочет заставить NullReferenceException, хотя это было бы not be best-practise.

11

Нет, не существует. Единственная причина, по которой это доступно, заключается в том, что она исходит от объекта. (И строка наследует от Object)

+1

Ну, строка _does_ предоставляет свою собственную реализацию; это не _just_ там из 'объекта'. – Rawling

+0

String.toString(): Этот объект (который уже является строкой!) Сам возвращается.
Object.toString(): метод toString для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр, символ at-sign '@ 'и шестнадцатеричное представление без знака хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению
Взято с: http://docs.oracle.com –

+0

Это моя точка (хотя я не уверен, что в нее входят Oracle и '@ hashcode'). – Rawling

1

Нет никакой разницы. Нет смысла преобразовывать строку в строку снова. Я думаю, что правильный код должен быть следующим:

WebResponse response = GetResponse(); 
return response.ToString(); 

GetResponse() возвращает объект WebResponse.

0

Технически, отмеченный ответ правильный, но я хотел бы представить идею полиморфизма в ответе здесь. Есть причина использовать string.ToString, это будет просто косвенным.

Рассмотрим следующий сценарий:

string s = "my groovy string"; 
object o = s; //This or something like this could happen for many reasons but this is an example so don't analyze this simplicity. 
Console.Write(o.ToString()); //We are technically calling string.ToString() leading to the code in Tim's answer where we return this. 

Помимо того, что ToString определяется на Object, поэтому string.ToString возвращает себя и это разумно (хотя, кругом) использовать, чтобы вернуться основной вопрос.

Смежные вопросы