Примеры неявного назначения переменных в C # - PullRequest
6 голосов
/ 09 августа 2010

Я заметил, что вы можете делать такие вещи в C #:

XNamespace c = "http://s.opencalais.com/1/pred/";

Обратите внимание, что строковое значение неявно преобразуется в другой тип. Есть ли другие места, где это можно сделать? Каковы некоторые распространенные модели и практики вокруг такого рода вещей?

Ответы [ 4 ]

5 голосов
/ 09 августа 2010

Это может произойти всякий раз, когда определен оператор неявного преобразования . В целом, это довольно редко.

4 голосов
/ 09 августа 2010

это должно помочь http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

редактировать: Matt ninja'd it:)

2 голосов
/ 09 августа 2010

Удивительно, но впервые я увидел это в статье Википедии об операторах преобразования C #, я никогда раньше не видел, чтобы кто-нибудь использовал это раньше.Похоже, это ухудшит читабельность и запутает многих разработчиков ...

1 голос
/ 09 августа 2010

В основном XNamespace предоставляет оператор, который выполняет неявное преобразование.

Я полагаю, что большинство руководящих принципов здравого смысла применимы, используйте их только там, где это имеет смысл, и избегайте путаницы.Самая большая проблема - неявное непреднамеренное преобразование, которое потенциально может привести к ошибкам программирования.Вы можете избежать этого и по-прежнему предоставлять преобразование с помощью явного оператора преобразования.

Примером случая, когда вы хотите использовать явный оператор преобразования вместо неявного, будет целочисленный класс, который позволяет преобразование из типа с плавающей запятой;неявное преобразование будет скрывать усечение / округление, которое должно произойти, и, таким образом, может привести пользователя в замешательство (и, вероятно, стать источником ошибок).

В моем коде я использовал его несколько развремя, например, в очень простой структуре результата проверки, которая обеспечивала неявное преобразование в bool (но не из).Это позволило мне сделать if (result) { ... } (хотя жюри все еще не знает о полезности этого:)).

Думаю, большая часть его использования для "простых" типов данных, таких как большие целые числа, десятичные числа и аналогично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...