Примеры неявного переменного присвоения в C#

Я заметил, что можно сделать этот вид вещи в C#:

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

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

6
задан Paul Fryer 8 August 2010 в 20:41
поделиться

4 ответа

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

5
ответ дан 9 December 2019 в 20:38
поделиться

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

2
ответ дан 9 December 2019 в 20:38
поделиться

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

edit: Matt ninja'd it :)

4
ответ дан 9 December 2019 в 20:38
поделиться

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

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

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

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

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

1
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

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