如何在c#的元组列表中添加不同的值
本文关键字:添加 元组 列表 | 更新日期: 2023-09-27 18:13:06
我正试图在具有元组列表但键相同的字典中添加值。
我是这样做的
public struct MyStruct { public List> list1; }
public static Dictionary<long, MyStruct> myDictionary = new
Dictionary<long, MyStruct>();
funct()
{
if (myDictionary.ContainsKey(key))
{
myDictionary[key]= new MyStruct { list1 = s.list1 };
} // this block is been called from another function
}
但是当我每次使用新关键字时,值都会被覆盖。但我想补充一下,因为我没有别的办法了。请给我建议另一种方法。我在网上找遍了,但没有一个能解决我的问题。
代替每次使用new
关键字,您可以检查null,然后向结构内部的列表添加值:
funct(){
if (myDictionary.ContainsKey(key))
{
if(myDictionary[key].list1 != null)
myDictionary[key].list1.AddRange(s.list1);
else myDictionary[key].list1 = new MyStruct { list1 = s.list1 };
} // this block is been called from another function
}
这样,如果你已经在字典结构的列表中有了值,那么新的值也会被添加到列表中。如果您没有任何值,并且列表只是null
,则程序将像现在一样执行并创建一个新列表。
如果你想添加一个值到Dictionary<TKey, TValue>
,首先你需要检查键是否已经存在,因为键应该是唯一的,如果键不存在,你可以设置一个值,否则如果键已经存在,那么你使用该键获取值并更新它。看看下面的例子,我希望它能帮助你理解它是如何工作的。您可以在这里执行下面的示例
//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5
using System;
using System.Collections.Generic;
namespace Rextester
{
public class Program
{
public static Dictionary<long, MyStruct> myDictionary = new Dictionary<long, MyStruct>();
public static void Main(string[] args)
{
myDictionary.Add(1, new MyStruct { Numbers = new List<int> { 1, 2} });
Add(1, 3);
// printing out the values
foreach(KeyValuePair<long, MyStruct> number in myDictionary)
{
Console.WriteLine("Key: {0}", number.Key);
Console.WriteLine("Values:");
for(var i = 0; i < number.Value.Numbers.Count; i++)
{
Console.WriteLine(number.Value.Numbers[i]);
}
}
}
public static void Add(long key, int number)
{
if (myDictionary.ContainsKey(key))
{
var myStruct = myDictionary[key];
if (myStruct.Numbers != null)
{
myStruct.Numbers.Add(number);
}
}
else
{
myDictionary[key] = new MyStruct { Numbers = new List<int> { number }};
}
}
}
public struct MyStruct
{
public List<int> Numbers;
}
}