如何创建列表并在C#中查找值

时间:2011-08-03 05:55:49

标签: c#

我想在C#中实现某种查找,但我不知道如何做到这一点。

我有一个变量,其值可以在0到9之间。对于每个变量,都会有一个文本字符串。

我想我需要设置某种列表。

一个关于如何访问列表以及如何填充列表的一个非常简单的示例将非常感激。

我尝试了以下内容:

public static class RefData
{
    public static Dictionary<int, string> dict = new Dictionary<int, string>();
    dict.Add(0, "This Text");
    dict.Add(3, "That Text");
    dict.Add(4, "More Text");
}

但它会显示一条错误消息“无法使用dict解析符号dict。添加

5 个答案:

答案 0 :(得分:2)

这是对更新后问题的回答。您当前代码的问题在于您尝试执行语句而不将它们放在方法,属性,构造函数等中。您不能这样做。这里有两个明显的选择。首先,您可以使用方法来构建字典:

public static class RefData
{
    private static readonly Dictionary<int, string> dict = BuildDictionary();

    private static Dictionary<int, string> BuildDictioary()
    {
        Dictionary<int, string> ret = new Dictionary<int, string>();
        ret.Add(0, "This Text");
        ret.Add(3, "That Text");
        ret.Add(4, "More Text");
        return ret;
    }
}

如果您使用的是C#3或更高版本,则另一种方法是使用集合初始化程序

public static class RefData
{
    private static readonly Dictionary<int, string> dict = 
        new Dictionary<int, string>
    {
        { 0, "This Text" },
        { 3, "That Text" },
        { 4, "More Text" }
    };
}

请注意,在这两种情况下,我都将变量设为私有和只读。你应该永远公开公开字段 - 特别是可变的字段。您可能希望在字典上提供 act 的适当方法 - 并记住Dictionary 线程安全。

答案 1 :(得分:1)

您正在尝试将代码放在类定义中。您需要在方法或静态构造函数中移动dict.Add()调用。类似的东西:

public static class RefData
{
    public static Dictionary<int, string> dict = new Dictionary<int, string>();

    static Refdata() //this could also be: public static void PopulateDictionary()
    {
        dict.Add(0, "This Text");
        dict.Add(3, "That Text");
        dict.Add(4, "More Text"); 
    }
}

如果你想用默认数据填充它,你可以这样做,我想,你可以随后从代码的其他部分添加或删除密钥,因为它是一个公共静态成员。


通用字典。类似的东西:

 Dictionary<int, string> dict = new Dictionary<int, string>()

第一种类型,int是你的关键。每个键必须是唯一的,并且具有字符串值。

如果你做了这样的事情:

 dict.Add(0, "This Text");
 dict.Add(3, "That Text");
 dict.Add(4, "More Text");

你可以像这样查找价值:

 string value = dict[3];  //returns "That Text"

如果词典中已存在,则添加将失败。因为你不能这样做两次:

 dict.Add(3, "That Text");
 dict.Add(3, "More Text");

正如我之前所说,密钥(在这种情况下是你的int)必须是唯一的。您可以通过执行

重新分配值
 dict[3] = "New Text"

关于通用字典的好处是它可以容纳你想要的任何类型!字典的定义是Dictionary<Tkey, TValue>,你可以指定类型,你可以将它们设置为你想要的任何类型。

答案 2 :(得分:0)

字典班是你的朋友。

e.g。

var textByNumber = new Dictionary<int, string>();    
textByNumber[0] = "Alice";    
textByNumber[1] = "Bob";

要追溯价值,你可以去:

var text = textByNumber[1];

答案 3 :(得分:0)

您可以使用Dictionary

中的System.Collections.Generic课程
Dictionary<byte, string> dct = new Dictionary<byte, string>();

您可以像这样

向字典添加值
dct.Add(0, "Some Value");

您可以像这样访问字典中的值

string val = dct[0];

答案 4 :(得分:0)

I have a variable that can have a value of between 0 and 9. For each variable there will be a text string that goes with it. 

这意味着你需要一本字典。您可以在.NET中使用许多专门的词典。但我的建议是使用:

Dictionary<int, string> list = new Dictionary<int, string>();

要检查列表是否已包含某些内容,只需使用:

list.ContainsKey(someIntHere);

要获取指定键的字符串值,只需使用:

string value = list[key];