Один из способов (что я бы не использовать), чтобы обеспечить implicit conversion от string
до Perfume
:
public static implicit operator Perfume(string aroma)
{
return new Perfume { Aroma = aroma };
}
Тогда это работает:
Perfume perfume = new Perfume();
perfume = "aroma";
Но для этого нужно создать новый объект который редко желателен, так как он удаляет все другие свойства, а также делает код менее удобочитаемым (первая строка бессмысленна, так как она создает бросок-парфюм).
В качестве альтернативы, как правило, Aroma
также будет классом со свойствами вместо string
. Другой способ - предоставить enum
доступных ароматов. Это повышает читаемость и делает код более надежным.
Но, возможно, вы действительно ищете способ найти свои ароматы через арома-название. Тогда Dictionary<string, Perfume>
(или Dictionary<Aroma, Perfume>
, где Aroma
это перечисление) было бы более уместно:
Dictionary<string, Perfume> allAromas = new Dictionary<string, Perfume>();
allAromas.Add("Musky", new Perfume{Aroma="Musky"});
allAromas.Add("Putrid", new Perfume{Aroma="Putrid"});
allAromas.Add("Pungent", new Perfume{Aroma="Pungent"});
allAromas.Add("Camphoraceous", new Perfume{Aroma="Camphoraceous"});
allAromas.Add("Pepperminty", new Perfume{Aroma="Pepperminty"});
Теперь вы можете получить доступ к парфюм позже очень быстро с помощью арома-имя:
Perfume muskyPerfume = allAromas["Musky"];
Вы можете создать новый '' Perfume': публичный статический неявный оператор Perfume (строка аромат) { вернуть новый Perfume {Аромат = аромат}; } ' –