以干净的方式访问字典的键值

问题描述 投票:0回答:1

我正在使用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。请看一下。

我可以将其重构为与上述两种方法不同(更好)的方法吗?谢谢你。

c# dictionary key-value
1个回答
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
}
© www.soinside.com 2019 - 2024. All rights reserved.