我将字典定义为:
Dictionary<string, string> typeLookup = new Dictionary<string, string>();
我想根据用户选择的语言在字典中添加一个键/值,在我的例子中可以找到:
Request.Cookies["language"].Value == "ja-JP" //if true, Japanese, if false, English
我可以做if / elses,但我很好奇是否有办法让这项工作:
typeLookup.Add((Request.Cookies["language"].Value == "ja-JP") ? "6","中間" : "6","Q2");
因为它是一个字典,所以需要指定两个字符串。这不起作用,给我“语法错误,':'预期”。这是一个失败的原因,还是有什么我需要改变/添加以使这个想法有效?
答案 0 :(得分:2)
由于条件的两边使用相同的键,你可以作弊:
typeLookup.Add("6", (Request.Cookies["language"].Value == "ja-JP") ? "中間":"Q2");
然而,在一般情况下,你最终会得到一个相当丑陋,重复的陈述:
typeLookup.Add(
(Request.Cookies["language"].Value == "ja-JP") ? "6" : "7"
, (Request.Cookies["language"].Value == "ja-JP") ? "中間" : "Q2"
);
答案 1 :(得分:1)
假设密钥始终保持不变,则将三元组短路仅应用于该值(另外,如果您要多次比较,我会存储isEnglish
或isJapanese
值:
typeLookup.add("6", Request.Cookies["language"] == "ja-JP" ? "中間" : "Q2");
但是,您始终可以创建帮助程序:
Dictionary<string, string> typeLookup = new Dictionary<string, string>();
System.Action<String,String,String> japEng = (key,japaneseValue,englishValue) => {
if (Request.Cookies["language"].Value == "ja-JP")
typeLookup.Add(key, japaneseValue);
else
typeLookup.Add(key, englishValue);
};
japEng("6", "中間", "Q2");
只是另一种选择......