Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言的列表中写入变量名?_C#_List - Fatal编程技术网

C# 如何在c语言的列表中写入变量名?

C# 如何在c语言的列表中写入变量名?,c#,list,C#,List,我有一些在列表中移动变量的代码,我想根据变量在列表中的位置来编写变量的名称 这就是我所尝试的: int var1 = 4; int var2 = 6; int var3 = 12; List<int> List = new List<int>() { var1, var2, var3 }; Console.WriteLine(nameof(List[1])); 我不能,或者至少我不认为我可

我有一些在列表中移动变量的代码,我想根据变量在列表中的位置来编写变量的名称

这就是我所尝试的:

        int var1 = 4;
        int var2 = 6;
        int var3 = 12;

        List<int> List = new List<int>() { var1, var2, var3 };
        Console.WriteLine(nameof(List[1]));
我不能,或者至少我不认为我可以只写控制台;因为每次都会写入var2,但我希望能够写入第二个变量的名称,即使我移动了 周围每个变量的位置


任何帮助都将不胜感激:

列表不存储实际变量,只存储它的值。如果要存储名称和值,则需要使用或的列表,将“名称”设置为键,将值设置为值。

列表不存储实际变量,只存储其值。如果要存储名称和值,则需要使用或的列表,将“名称”设置为键,将值设置为值。

另一种方法是创建自己的类来保存这两个值,并创建一个列表:

public class Data
{
    public String Name;
    public int Value;
}

public static void Main(string[] args)
{
    List<Data> data = new List<Data>();
    data.Add(new Data { Name = "var1", Value = 4 });
    data.Add(new Data { Name = "var2", Value = 6 });
    data.Add(new Data { Name = "var3", Value = 12 });
    Console.WriteLine("1: " + data[1].Name);

    data.Insert(1, new Data { Name = "newVar", Value = 5 });
    Console.WriteLine("1: " + data[1].Name);
    Console.WriteLine("2: " + data[2].Name);

    Console.WriteLine("Press Enter to Quit");
    Console.ReadLine();
}

另一种方法是创建自己的类来保存这两个值,并将其列成一个列表:

public class Data
{
    public String Name;
    public int Value;
}

public static void Main(string[] args)
{
    List<Data> data = new List<Data>();
    data.Add(new Data { Name = "var1", Value = 4 });
    data.Add(new Data { Name = "var2", Value = 6 });
    data.Add(new Data { Name = "var3", Value = 12 });
    Console.WriteLine("1: " + data[1].Name);

    data.Insert(1, new Data { Name = "newVar", Value = 5 });
    Console.WriteLine("1: " + data[1].Name);
    Console.WriteLine("2: " + data[2].Name);

    Console.WriteLine("Press Enter to Quit");
    Console.ReadLine();
}

奥克利是对的。但我喜欢这种情况下的字典,因为它非常简单,性能也很好。只要看看代码

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

dictionary.Add("var1", 4);
dictionary.Add("var2", 6);
dictionary.Add("var3", 12);

foreach (var i in dictionary)
{
    System.Console.WriteLine(i.Key);
}
如果需要,该键和值可以是任何数据类型。然后您可以使用以下命令

Dictionary<object, object> dictionary = new Dictionary<object, object>();

奥克利是对的。但我喜欢这种情况下的字典,因为它非常简单,性能也很好。只要看看代码

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

dictionary.Add("var1", 4);
dictionary.Add("var2", 6);
dictionary.Add("var3", 12);

foreach (var i in dictionary)
{
    System.Console.WriteLine(i.Key);
}
如果需要,该键和值可以是任何数据类型。然后您可以使用以下命令

Dictionary<object, object> dictionary = new Dictionary<object, object>();

第二个变量的名称始终为var2。-此外,列表中保存的是值,而不是变量,也不是对变量的引用。听起来您实际上想将值映射到名称,而不是将变量映射到名称。是的,目前,第二个变量的名称是var2,但我想使用List.add/remove/insert,并始终能够获取第二个变量的名称。第二个索引,或者任何索引,列表、数组或任何类型的集合都没有名称,这里不计算字典,只有一个值。试着解释你想做什么,而不是你认为你需要如何解决这个问题。当你的程序完成编译时,所有这些名字都消失了。nameof是编译器提供的一个很好的函数,用于在编译期间将变量名转换为字符串。它的存在使我们可以抛出新的参数Exceptionthe+nameofuserid+参数不能是管理员,如果我们重命名userid,则消息会更新,如果我们只编写userid参数的硬字符串,则不会发生更新。。。nameof主要是为了使开发人员的生活更轻松,就像这样,它不是在许多其他上下文中使用的。第二个变量的名称始终是var2。-此外,列表中保存的是值,而不是变量,也不是对变量的引用。听起来您实际上想将值映射到名称,而不是将变量映射到名称。是的,目前,第二个变量的名称是var2,但我想使用List.add/remove/insert,并始终能够获取第二个变量的名称。第二个索引,或者任何索引,列表、数组或任何类型的集合都没有名称,这里不计算字典,只有一个值。试着解释你想做什么,而不是你认为你需要如何解决这个问题。当你的程序完成编译时,所有这些名字都消失了。nameof是编译器提供的一个很好的函数,用于在编译期间将变量名转换为字符串。它的存在使我们可以抛出新的参数Exceptionthe+nameofuserid+参数不能是管理员,如果我们重命名userid,则消息会更新,如果我们只编写userid参数的硬字符串,则不会发生更新。。。nameof主要是为了让开发人员的生活变得更轻松,而不是在许多其他环境中使用。谢谢,这是有效的!谢谢,这很有效!