Пользовательские примитивы в C#?

Обратите внимание, что вы не закрыли свой якорь. Попробуйте изменить свой HTML-код на:

<div class="value-holder FL">
   <img src="abc.jpg" alt="" class="flag">
   <a href="xyz.pdf" target="_blank"><h2> Product Brochure (German) </h2></a>
</div>
16
задан 6 May 2009 в 21:32
поделиться

2 ответа

Используйте тип значения ( struct ) и дайте ему неявный оператор преобразования из типа, который вы хотите указать в правой части присваивания.

struct MyPrimitive
{
    private readonly string value;

    public MyPrimitive(string value)
    {
        this.value = value;
    }

    public string Value { get { return value; } }

    public static implicit operator MyPrimitive(string s)
    {
        return new MyPrimitive(s);
    } 

    public static implicit operator string(MyPrimitive p)
    {
        return p.Value;
    }
}

РЕДАКТИРОВАТЬ: Сделал структуру неизменной, потому что Марк Грейвелл абсолютно прав.

34
ответ дан 30 November 2019 в 16:58
поделиться

Вы можете использовать неявное приведение . Это не рекомендуется, но:

public static implicit operator string(MyString a) {
    return a.Value;
}
public static implicit operator MyString(string a) {
    return new MyString { value = a; }
}

Опять же, плохая практика.

1
ответ дан 30 November 2019 в 16:58
поделиться
Другие вопросы по тегам:

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