Я заметил, что можно сделать этот вид вещи в C#:
XNamespace c = "http://s.opencalais.com/1/pred/";
Заметьте, что строковое значение неявно преобразовывается в другой тип. Есть ли другие места, это может быть сделано? Каковы некоторые общие шаблоны и методы вокруг этого вида вещи?
Это может произойти всякий раз, когда определен оператор неявного преобразования . В общем, довольно редко.
Удивительно, но я впервые увидел это в статье Википедии об операторах преобразования C #. Я никогда раньше не видел, чтобы кто-то использовал это. Похоже, это повредит читабельности и запутает многих разработчиков ...
это должно помочь http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx
edit: Matt ninja'd it :)
В основном XNamespace предоставляет оператор, который выполняет неявное преобразование.
Я полагаю, что здесь применимы рекомендации здравого смысла: используйте его только там, где это имеет смысл, и избегайте путаницы. Самой большой проблемой является непреднамеренное неявное преобразование, которое потенциально может привести к ошибкам в программировании. Вы можете избежать этого и все же обеспечить преобразование с помощью явного оператора преобразования.
Примером случая, когда вы захотите использовать явный оператор преобразования вместо неявного, может быть класс integer, который позволяет преобразование из типа с плавающей точкой; неявное преобразование скрыло бы усечение/округление, которое должно было бы произойти, и, таким образом, могло бы сильно запутать пользователя (и, вероятно, стать источником ошибок).
В своем коде я использовал его пару раз, например, в очень простой структуре результатов проверки, которая обеспечивала неявное преобразование в bool (но не из). Это позволило мне сделать if (result) { ... }
(впрочем, присяжные еще не определились с полезностью этого :)).
Полагаю, что в основном он используется для "простых" типов данных, таких как большие целые числа, десятичные числа и т.п.