CSHARPPROGLIB Telegram 6287
💡 Что скрывается под капотом IReadOnlyList

В .NET есть интерфейс IReadOnlyList<T>. На первый взгляд, он обещает нам неизменяемый список. Но это полуправда.

Определение интерфейса:
public interface IReadOnlyList<out T> : IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable
{
T this[int index] { get; }
}


Интерфейс наследует IReadOnlyCollection, а тот, в свою очередь, наследует IEnumerable.
Таким образом, он даёт доступ: к элементам через индекс (this[int index]), к свойству Count, и к итерации через foreach.

⚠️ Важный нюанс: IReadOnlyList не делает коллекцию реально readonly.

Если у вас есть List<int> и вы приведёте его к IReadOnlyList<int>, изменять список по-прежнему можно — просто не через эту ссылку.

Пример:
var list = new List<int> { 1, 2, 3 };
IReadOnlyList<int> ro = list;

list.Add(4); // ro теперь "видит" 4


То есть IReadOnlyList — это контракт для чтения, а не гарантия неизменности.
Если нужна настоящая защита — используйте ImmutableArray или ReadOnlyCollection.

🐸Библиотека шарписта

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
12❤‍🔥7🥱7👍1



tgoop.com/csharpproglib/6287
Create:
Last Update:

💡 Что скрывается под капотом IReadOnlyList

В .NET есть интерфейс IReadOnlyList<T>. На первый взгляд, он обещает нам неизменяемый список. Но это полуправда.

Определение интерфейса:

public interface IReadOnlyList<out T> : IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable
{
T this[int index] { get; }
}


Интерфейс наследует IReadOnlyCollection, а тот, в свою очередь, наследует IEnumerable.
Таким образом, он даёт доступ: к элементам через индекс (this[int index]), к свойству Count, и к итерации через foreach.

⚠️ Важный нюанс: IReadOnlyList не делает коллекцию реально readonly.

Если у вас есть List<int> и вы приведёте его к IReadOnlyList<int>, изменять список по-прежнему можно — просто не через эту ссылку.

Пример:
var list = new List<int> { 1, 2, 3 };
IReadOnlyList<int> ro = list;

list.Add(4); // ro теперь "видит" 4


То есть IReadOnlyList — это контракт для чтения, а не гарантия неизменности.
Если нужна настоящая защита — используйте ImmutableArray или ReadOnlyCollection.

🐸Библиотека шарписта

#il_люминатор

BY Библиотека шарписта | C#, F#, .NET, ASP.NET


Share with your friend now:
tgoop.com/csharpproglib/6287

View MORE
Open in Telegram


Telegram News

Date: |

Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” How to Create a Private or Public Channel on Telegram? While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. The Channel name and bio must be no more than 255 characters long 2How to set up a Telegram channel? (A step-by-step tutorial)
from us


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM American