C#: Пользовательский кастинг к типу значения

Я знаю, что это старый вопрос, но почему вы не заменили все свои вызовы журнала чем-то вроде Boolean logCallWasHere = true; // --- остальная часть вашего журнала здесь

Вот почему вы будете знать, когда вы хотите вернуть их обратно, и они не повлияют на ваш вызов оператора if :):

10
задан Andreas Grech 2 July 2009 в 09:46
поделиться

5 ответов

Вам придется перегрузить оператор приведения.

    public class Foo
    {
        public Foo( double d )
        {
            this.X = d;
        }

        public double X
        {
            get;
            private set;
        }


        public static implicit operator Foo( double d )
        {
            return new Foo (d);
        }

        public static explicit operator double( Foo f )
        {
            return f.X;
        }

    }
23
ответ дан 3 December 2019 в 14:11
поделиться

Какая кодировка символов в файле JS?

Для XML QNames я использую это RegExp:

/**
 * Definition of an XML Name
 */
var NameStartChar = "A-Za-z:_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D"+
                    "\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF"+
                    "\uF900-\uFDCF\uFDF0-\uFFFD\u010000-\u0EFFFF";
var NameChar = NameStartChar+"\\-\\.0-9\u00B7\u0300-\u036F\u203F-\u2040";
var Name = "^["+NameStartChar+"]["+NameChar+"]*$";
RegExp (Name).test (value);

Он работает как шарм также с интернационализированными символами. Обратите внимание на побег. Благодаря этому я могу ограничить JS-файл только символами ASCII . Поэтому у меня нет проблем при работе с кодировками ISO-8859 и UTF-8.

Это больше не верно, если вы используете кодировки символов, в которых ASCII не является реальным подмножеством (например, в Азии UTF-16 ).

Ура,

Операторы неявного преобразования никогда не должны вызывать исключения и никогда не терять информацию, чтобы их можно было безопасно использовать без ведома программиста. Если оператор преобразования не может соответствовать этим критериям, он должен быть отмечен явным. "(выделено мной)

7
ответ дан 3 December 2019 в 14:11
поделиться

Вам необходимо определить явное или неявное преобразование:

public class Foo
{
    public static implicit operator int(Foo d)
    {
        return d.SomeIntProperty;
    }

    // ...
5
ответ дан 3 December 2019 в 14:11
поделиться

Другая возможность - написать метод расширения Parse и TryParse для вашего класса.

Затем вы должны написать свой код следующим образом:

var x = new Foo();
var y = int.Parse(x); 
0
ответ дан 3 December 2019 в 14:11
поделиться

Я бы посоветовал вам реализовать интерфейс IConvertible, поскольку он предназначен для этого. См. http://msdn.microsoft.com/en-us/library/system.iconvertible.aspx

1
ответ дан 3 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

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