【发布时间】:2021-08-06 11:25:23
【问题描述】:
我正在尝试使用 {get; private set;} 用于我现在正在构建的摩尔斯电码翻译器。 MorseToText 字典应该是从我已经定义的 TextToMorse 字典构建的。出于某种原因,当我使用它时,我的字典是空的。
private static Dictionary<char, string> TextToMorse = new Dictionary<char, string>()
{
{'A', ".-" }, {'B', "-..."}, {'C', "-.-."}, {'D', "-.."}, {'E', "."}, {'F', "..-."},
{'G', "--."}, {'H', "...."}, {'I', ".."}, {'J', ".---"}, {'K', "-.-"}, {'L', ".-.."}, {'M', "--"},
{'N', "-."}, {'O', "---"}, {'P', ".--."}, {'Q', "--.-"}, {'R', ".-."}, {'S', "..."}, {'T', "-"},
{'U', "..-"}, {'V', "...-"}, {'W', ".--"}, {'X', "-..-"}, {'Y', "-.--"}, {'Z', "--.." }
};
private static Dictionary<string, char> _MorseToText = new Dictionary<string, char>();
public static Dictionary<string, char> MorseToText
{
get { return _MorseToText; }
private set
{
foreach (KeyValuePair<char, string> pair in TextToMorse)
{
_MorseToText.Add(pair.Value, pair.Key);
}
}
}
...
for (int i = 0; i < splitInput.Length; i++)
{
MorseToText.TryGetValue(splitInput[i], out char value);
output += $"{value} ";
}
【问题讨论】:
-
你的 getter 返回
_MorseToText变量,但它只是被初始化为一个空字典并且不再被引用。它总是会返回那个空字典。 -
在分配属性时使用
set关键字。它不用作初始化方法 -
@Alejandro 直到他们将某些内容设置为
MorseToText,然后它会将TextToMorse复制到支持字段_MorseToText中,这对于试图将其设置为其他内容的人来说是非常意外的。
标签: c# dictionary morse-code