我正在用 C#/.NET 4.5 编写一个应用程序,并且我有一个这样定义的字典:
Dictionary<int, string> d = new Dictionary<int, string>();
我的整数键是连续且唯一的,除了空字符串,我的值也是唯一的。例如:
Key Value
0 AAAAAAAAAA
1 BBBBBB
2 (empty string)
3 CCCCCCCCCCCCCCCCCCCCCCCC
4 DDDDDDDDDDDDDDD
5 EEEEEEEEEEEEEEEEEEE
6 (empty string)
当我有一个新字符串要添加到字典中时,我需要将它分配给值为(空字符串)的键之一。理想情况下,我想在这样的密钥的第一个实例中执行此操作。我目前正在像这样循环浏览我的字典:
int keyNumber;
foreach (KeyValuePair<int, string> pair in d)
{
if (pair.Value == string.Empty)
{
keyNumber = pair.Key;
break;
}
}
d[keyNumber] = "new string goes here!";
这行得通,但是有没有更好(或更快)的方法来完成同样的事情?如果这实际上是最好的方法,是否可以将其缩短为 LINQ 表达式?
编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------
我遗漏了可能需要解释的重要内容。加载到我的字典中的值实际上是从包含固定长度字节数组的二进制文件中加载的,这些字节数组包含 ASCII 字符串。该文件将始终由 5000000 字节或 100000 个字符串组成,每个字符串 50 个字节。文件结构由将使用文件的设备上的一些硬件限制决定。因此,我的字典中每个 KeyValuePair 的键实际上用于确定文件的偏移量,当用户完成更改时,我需要在其中写入任何更改。例如,使用 4 的键,然后我乘以 50 到 200 字节的起始偏移量。然后我将修改后的字符串写回到那个位置。很抱歉在我的原始帖子中省略了这一点。