Примеры неявного назначения переменных в 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) { ... }
(жюри все еще не знает о полезности этого:)).
угадайте, что большая часть его использования предназначена для "простых" типов данных, таких как большие целые числа, десятичные числа и т. д.