我正在使用constants.cs中的字典并在Index.razor.cs中访问它。如果有更好的方法来重构相同的代码,我将不胜感激
常量.cs
public static readonly Dictionary<string, double> ExampleDict= new Dictionary<string, double>
{
{ "Apple", 1.7 },
{ "Mango", 3.2 },
{ "Orange", 2.1 },
{ "Banana", 0.5 },
};
Index.razor.cs:--> 方法一:
Result = (incomingValue > 5) ? null
: item.Id == Constants.ExampleDict.Keys.ElementAt(0) ? Constants.ExampleDict.Values.ElementAt(0)
: item.Id == Constants.ExampleDict.Keys.ElementAt(1) ? Constants.ExampleDict.Values.ElementAt(1)
: item.Id == Constants.ExampleDict.Keys.ElementAt(2) ? Constants.ExampleDict.Values.ElementAt(2)
: Constants.ExampleDict.Values.ElementAt(3);
方法二:
Result = (incomingValue > 5) ? null
: item.Id == Constants.ExampleDict.Keys.ElementAt(0) ? Constants.ExampleDict["Apple"]
: item.Id == Constants.ExampleDict.Keys.ElementAt(1) ? Constants.ExampleDict["Mango"]
: item.Id == Constants.ExampleDict.Keys.ElementAt(2) ? Constants.ExampleDict["Orange"]
: Constants.ExampleDict["Banana"];
我被推荐了此链接:https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2.item?view=net-7.0。请看一下。
我可以将其重构为与上述两种方法不同(更好)的方法吗?谢谢你。
当您已经有了键值对时,为什么还要担心索引呢?这很麻烦,可能会导致奇怪的行为,特别是因为
Dictionary
无法保证顺序,因此无法保证特定 index 处的元素。但是,您可以轻松访问特定 key 的值:
Dictionary<TKey, TResult>.ContainsKey(string)
例如
if(Constants.ExampleDict.ContainsKey("Apple"))
{
var value = Constants.ExampleDict["Apple"]
// do something with the value
}
您也可以使用这个:
if(Constants.ExampleDict.TryGetValue("Apple", out var value))
{
// do something with the value
}