C#: общедоступная новая строка ToString () переопределение общественности VS представляет ToString в виде строки ()

Вы можете установить свойство ширины с выбранным инициализатором.

$(".chosen-select").chosen({ allow_single_deselect: true, disable_search_threshold: 5, width:"100%" });
20
задан marcgg 18 June 2009 в 19:57
поделиться

7 ответов

Если вы используете публичную строку ToString () , неясно, что вы намеревались сделать . Если вы хотите изменить поведение ToString с помощью полиморфизма, тогда переопределит . Вы могли добавить новый ToString () , но это было бы глупо. Не делайте этого!

Разница в том, что происходит, когда вы это делаете:

MyType t = new MyType();
object o = t;
Console.WriteLine(t.ToString());
Console.WriteLine(o.ToString());

Если вы переопределите , оба будут выводить вашу новую версию. Если вы новый , только первый будет использовать вашу новую версию; второй будет использовать исходную реализацию.

Не думаю, что я когда-либо видел, чтобы кто-нибудь использовал метод сокрытия (он же новый ) в ToString () .

35
ответ дан 29 November 2019 в 23:11
поделиться

Проблема в том, что ToString - это виртуальный метод. Чтобы переопределить виртуальный метод в C #, вам необходимо указать ключевое слово override.

Вам почти наверняка не нужна «новая» версия. .

9
ответ дан 29 November 2019 в 23:11
поделиться

Модификатор new скроет или «затеняет» член с той же сигнатурой в базовом классе, тогда как переопределение обеспечивает новую реализацию член, унаследованный от базового класса. Вот хорошая статья о различиях между затенением и перекрытием.

4
ответ дан 29 November 2019 в 23:11
поделиться

Вы хотите переопределить. В вашем случае нет никакого преимущества в сокрытии (с использованием «нового»).

Вот статья о различиях между переопределением и скрытием .

2
ответ дан 29 November 2019 в 23:11
поделиться

C # этого не требует; Решарпер знает. Это требуется, потому что два ключевых слова представляют собой существенно различающееся поведение, и если вы не укажете его, кто-то, читающий ваш код, может не понять, какое поведение по умолчанию используется по умолчанию (это новое .)

В этот случай вы явно хотите изменить.

1
ответ дан 29 November 2019 в 23:11
поделиться

Все, что вы делаете, зависит от того, какое поведение вы хотите. В этой статье объясняется, как поведение ToString работает в зависимости от того, как вы определили метод и на каком уровне иерархии классов вы вызываете ToString.

0
ответ дан 29 November 2019 в 23:11
поделиться

Моя личная рекомендация - не использовать сокрытие; он вызывает много неясностей и решает немногие.

0
ответ дан 29 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: