Tôi có một Dictionary<string, someobject>
.Sử dụng khóa trên khóa của Từ điển <string, object>
EDIT: Nó đã được chỉ ra cho tôi, rằng ví dụ của tôi là xấu. Toàn bộ ý định của tôi không cập nhật các tham chiếu trong một vòng lặp nhưng để cập nhật các giá trị khác nhau dựa trên các chủ đề khác nhau cần phải cập nhật/lấy dữ liệu. Tôi đã thay đổi vòng lặp thành một phương thức.
Tôi cần cập nhật các mục trong từ điển của mình - một khóa cùng một lúc và tôi đã tự hỏi liệu có bất kỳ sự cố nào khi sử dụng khóa trên giá trị .key của đối tượng Từ điển của tôi không?
private static Dictionary<string, MatrixElement> matrixElements = new Dictionary<string, MatrixElement>();
//Pseudo-code
public static void UpdateValue(string key)
{
KeyValuePair<string, MatrixElement> keyValuePair = matrixElements[key];
lock (keyValuePair.Key)
{
keyValuePair.Value = SomeMeanMethod();
}
}
Điều đó có thể xảy ra tại tòa hay không? Tôi chỉ muốn mỗi giá trị trong từ điển được khóa độc lập để khóa (và cập nhật) một giá trị không khóa những giá trị khác. Ngoài ra tôi biết rằng khóa sẽ được giữ trong một thời gian dài - nhưng dữ liệu sẽ không hợp lệ cho đến khi được cập nhật đầy đủ.
Không phải là câu trả lời, nhưng bạn biết rằng nếu bạn đã có cặp, bạn có thể sử dụng pair.Value thay vì gọi operator [] một lần nữa trên từ điển? – OregonGhost
Thực ra tôi đã thử, nhưng Giá trị là chỉ đọc hoặc vì vậy IDE của tôi đã nói với tôi? –
bạn không thể sửa đổi các yếu tố foreach – sieben