Если я пишу в коде строку в двойных кавычках, она сразу становится безымянным экземпляром типа string, а значит я могу поставить в конце точку и использовать методы со строкой. Если поставлю символ в одинарных кавычках - это будет char. А как мне реализовать что-то подобное со своим классом? Ну например если я что то возьму в кавычки, перед которыми будет символ звездочка (или просто в звездочки), то чтобы создавался экземпляр класса MyClass?
Ответ
То, что вы просите - это литералы для пользовательских типов. К сожалению, все поддерживаемые типы литералов жестко прописаны в стандарте языка.
Но вместо них (в какой-то мере) можно использовать implicit-операторы. Например:
public class MyClass
{
public string Prefix { get; set; }
public string Suffix { get; set; }
public static implicit operator MyClass(string source)
{
var tokens = source.Split(':');
return new MyClass
{
Prefix = tokens[0],
Suffix = tokens[1]
};
}
}
позволяет создавать объекты класса как:
MyClass val = "a:b";
Console.WriteLine(val.Prefix); // a
Console.WriteLine(val.Suffix); // b
Комментариев нет:
Отправить комментарий