Добавлять и удалять элементы из коллекции, объявленной как закрытая только для чтения.C#

Место общения программистов C#
Ответить
Anonymous
 Добавлять и удалять элементы из коллекции, объявленной как закрытая только для чтения.

Сообщение Anonymous »

Пока я работал со следующим фрагментом кода, который работает нормально, я заметил, что переменная _connections была объявлена ​​частной только для чтения, но затем ее значение фактически изменилось, а не только в объявлении или в конструкторе, как я ожидал. Я не мог понять, почему. Может кто-нибудь помочь мне понять, почему это работает?
public class WebSocketConnectionManager
{
private readonly ConcurrentDictionary _connections = new();
public async Task AddConnectionAsync(Int64 userId, string connectionId, WebSocket webSocket)
{
_connections.TryAdd(connectionId, webSocket);
Console.WriteLine($"Connection added: {connectionId}. Total connections: {_connections.Count}");
var notification = new { type = "user_joined", connectionId = connectionId, totalConnections = _connections.Count };
}
public async Task RemoveConnectionAsync(string connectionId)
{
if (_connections.TryRemove(connectionId, out var webSocket))
{
if (webSocket.State == WebSocketState.Open)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Connection closed", CancellationToken.None);
}
Console.WriteLine($"Connection removed: {connectionId}. Total connections: {_connections.Count}");
var notification = new { type = "user_left", connectionId = connectionId, totalConnections = _connections.Count };
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... e-readonly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»