Примеры неявного назначения переменных в C#

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

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

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

4 ответов


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


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

edit: Matt ninja'D it :)


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


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

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

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

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

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