Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Как в C# реализовано создание string из строки в кавычках?

Если я пишу в коде строку в двойных кавычках, она сразу становится безымянным экземпляром типа 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

Комментариев нет:

Отправить комментарий