Разница между constant и readonly
Constant и readonly имеют много общего, но есть некоторые важные различия:
1. constant оценивается во время компиляции, в то время как readonly оценивается во время выполнения.
2. constant поддерживает только переменные типа значения (единственным исключением являются строки), в то время как readonly может содержать переменные ссылочного типа.
3. constant следует использовать, когда значение не меняется во время выполнения, а readonly используется в основном тогда, когда фактическое значение неизвестно до выполнения.
4. readonly может инициализироваться только во время объявления или в конструкторе.
Constant и readonly имеют много общего, но есть некоторые важные различия:
1. constant оценивается во время компиляции, в то время как readonly оценивается во время выполнения.
2. constant поддерживает только переменные типа значения (единственным исключением являются строки), в то время как readonly может содержать переменные ссылочного типа.
3. constant следует использовать, когда значение не меняется во время выполнения, а readonly используется в основном тогда, когда фактическое значение неизвестно до выполнения.
4. readonly может инициализироваться только во время объявления или в конструкторе.
В чем различие между ключевыми словами «ref» и «out»?
Параметр с ключевым слово out может быть не инициализирован, а параметр с ключевым словом ref обязательно должен быть инициализирован до вызова метода, который использует эти параметры.
Параметр с ключевым слово out может быть не инициализирован, а параметр с ключевым словом ref обязательно должен быть инициализирован до вызова метода, который использует эти параметры.
Что такое IoC (Inversion of Control/инверсия управления) и для чего она нужна?
Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов.
Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов.
Что такое управляемый код и CLR? Основные требования к управляемому коду.
Управляемый код — код программы, исполняемый под управлением CLR (Виртуальной машиной .Net).
CLR (общеязыковая исполняющая среда) — исполняющая среда для байт-кода CIL (MSIL), в которой компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие). CLR является одним из основных компонентов пакета Microsoft .NET Framework.
Написанный управляемый код должен быть полностью совместим с CTS (Common Type System), который поддерживают все .Net совместимые языки.
Управляемый код — код программы, исполняемый под управлением CLR (Виртуальной машиной .Net).
CLR (общеязыковая исполняющая среда) — исполняющая среда для байт-кода CIL (MSIL), в которой компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие). CLR является одним из основных компонентов пакета Microsoft .NET Framework.
Написанный управляемый код должен быть полностью совместим с CTS (Common Type System), который поддерживают все .Net совместимые языки.
Является ли тип List потокобезопасной (thread-safe) коллекцией?
Тип List может быть потокобезопасным в операциях чтения.
Пользовательский код должен обеспечивать всю синхронизацию при параллельном добавлении элементов в несколько потоков или удалении элементов из них.
Тип List может быть потокобезопасным в операциях чтения.
Пользовательский код должен обеспечивать всю синхронизацию при параллельном добавлении элементов в несколько потоков или удалении элементов из них.
Какие отличие между значимыми и ссылочными типами?
Значимые типы (value type) хранятся в стеке. Стек — это структура данных, которая растет снизу вверх: каждый новый элемент помещаются поверх предыдущего. Время жизни переменных таких типов ограничено их контекстом. Физически стек — это некоторая область памяти в адресном пространстве. А ссылочные типы (reference type) хранятся в куче, это другая область памяти, которую можно представить как неупорядоченный набор различных объектов. Когда создаётся объект ссылочного типа в стеке помещается ссылка на адрес в куче. Когда этот объект перестает использоваться, то ссылка уничтожается. После этого в дело вступает автоматический сборщик мусора: он видит, что на объект в куче нету больше ссылок, и удаляет этот объект и очищает память.
Значимые типы (value type) хранятся в стеке. Стек — это структура данных, которая растет снизу вверх: каждый новый элемент помещаются поверх предыдущего. Время жизни переменных таких типов ограничено их контекстом. Физически стек — это некоторая область памяти в адресном пространстве. А ссылочные типы (reference type) хранятся в куче, это другая область памяти, которую можно представить как неупорядоченный набор различных объектов. Когда создаётся объект ссылочного типа в стеке помещается ссылка на адрес в куче. Когда этот объект перестает использоваться, то ссылка уничтожается. После этого в дело вступает автоматический сборщик мусора: он видит, что на объект в куче нету больше ссылок, и удаляет этот объект и очищает память.
Что такое абстракция и как она связана с ООП?
Под абстракцией понимается модель реальной жизни, упрощенная для решения конкретной задачи, которая выражена в объекте, то есть любой объект — это абстракция, так как она только частично описывает реальную сущность. Поэтому любой объект можно считать абстракцией и он только частично описывает реальную сущность. Во время преобразования реальных сущностей в объект, он лишается тех характеристик, которые являются несущественными деталями.
Например можно составить упрощенный класс человека, который умеет двигаться, а от всего остального мы абстрагируемся (в данным случае несущественно то, что он умеет дышать, кушать, видеть, слышать и так далее).
Под абстракцией понимается модель реальной жизни, упрощенная для решения конкретной задачи, которая выражена в объекте, то есть любой объект — это абстракция, так как она только частично описывает реальную сущность. Поэтому любой объект можно считать абстракцией и он только частично описывает реальную сущность. Во время преобразования реальных сущностей в объект, он лишается тех характеристик, которые являются несущественными деталями.
Например можно составить упрощенный класс человека, который умеет двигаться, а от всего остального мы абстрагируемся (в данным случае несущественно то, что он умеет дышать, кушать, видеть, слышать и так далее).
В чем отличие использования Finalize и Dispose?
Метод Finalize уже определен в базовом для всех типов классе Object, однако данный метод нельзя так просто переопределить. И фактическая его реализация происходит через создание деструктора. Вызывается сборщиком мусора, а точный момент вызова неопределен.
Метод Dispose нужен для ручного освобождения ресурсов, через его явный вызов или с помощью using.
Метод Finalize уже определен в базовом для всех типов классе Object, однако данный метод нельзя так просто переопределить. И фактическая его реализация происходит через создание деструктора. Вызывается сборщиком мусора, а точный момент вызова неопределен.
Метод Dispose нужен для ручного освобождения ресурсов, через его явный вызов или с помощью using.
Forwarded from Библиотека нейросетей | ChatGPT, Midjourney, DeepSeek, Sora
Please open Telegram to view this post
VIEW IN TELEGRAM
Как и зачем использовать конструкцию using в C#?
Ключевое слово using упрощает работу с объектами, которые реализуют интерфейс IDisposable.
Интерфейс IDisposable содержит один метод .Dispose(), который используется для освобождения ресурсов, которые захватил объект. При использовании using не обязательно явно вызывать .Dispose() для объекта.
Ключевое слово using упрощает работу с объектами, которые реализуют интерфейс IDisposable.
Интерфейс IDisposable содержит один метод .Dispose(), который используется для освобождения ресурсов, которые захватил объект. При использовании using не обязательно явно вызывать .Dispose() для объекта.
В чем отличие необязательных параметров от именованных?
Необязательные параметры позволяют опускать аргументы функции, в то время как именованные параметры разрешают передавать аргументы по названию параметра.
public void optionalParamFunc(int p1, int p2 = 2, int p3 = 3);
optionalParamFunc(1, p3:10); // это эквивалентно optionalParamFunc(1,2,10);
Необязательные параметры позволяют опускать аргументы функции, в то время как именованные параметры разрешают передавать аргументы по названию параметра.
public void optionalParamFunc(int p1, int p2 = 2, int p3 = 3);
optionalParamFunc(1, p3:10); // это эквивалентно optionalParamFunc(1,2,10);
Напишите программу для сложения всех чётных чисел в массиве
Ответ:
static long TotalAllNum(int[] intArray) {
return intArray.Where(i => i % 2 == 0).Sum(i => (long)i);
}
Ответ:
🦾🧠🏋️Качаем мозги к лету!
Курс «Алгоритмы и структуры данных» для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
➡️ Алгоритмы и структуры данных35 990 ₽ 21 594 ₽
⭐️ Переходите и активируйте бесплатные вводные занятия курса — https://proglib.io/w/da6727d1
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
Курс «Алгоритмы и структуры данных» для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
➡️ Алгоритмы и структуры данных
⭐️ Переходите и активируйте бесплатные вводные занятия курса — https://proglib.io/w/da6727d1
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
Отличия классов String и StringBuilder
Объект класса String представляет собой неизменяемую строку. Когда выполняется какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места.
Объект класса StringBuilder представляет собой динамическую строку. При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке, а при добавлении к ней каких-либо элементов строка не пересоздается заново. В том случае если выделенной памяти не будет хватать для добавления новых элементов, то емкость объекта будет увеличена.
Объект класса String представляет собой неизменяемую строку. Когда выполняется какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места.
Объект класса StringBuilder представляет собой динамическую строку. При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке, а при добавлении к ней каких-либо элементов строка не пересоздается заново. В том случае если выделенной памяти не будет хватать для добавления новых элементов, то емкость объекта будет увеличена.
Какие типы можно использовать в предложении foreach?
Сразу к сути — можно использовать типы, которые реализуют интерфейс IEnumerable или IEnumerable. Либо же любые типы, которые удовлетворяют следующим условиям:
✍🏻 Включают открытый метод GetEnumerator без параметров с классом, структурой или тип интерфейсом в качестве возвращаемого значения;
✍🏻 Тип возвращаемого значения метода GetEnumerator должен содержать открытое свойство Current и открытый метод MoveNext без параметров с типом возвращаемого значения Boolean.
Сразу к сути — можно использовать типы, которые реализуют интерфейс IEnumerable или IEnumerable. Либо же любые типы, которые удовлетворяют следующим условиям:
✍🏻 Включают открытый метод GetEnumerator без параметров с классом, структурой или тип интерфейсом в качестве возвращаемого значения;
✍🏻 Тип возвращаемого значения метода GetEnumerator должен содержать открытое свойство Current и открытый метод MoveNext без параметров с типом возвращаемого значения Boolean.
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
📖 ТОП-7 книг по C# для начинающих разработчиков в 2024 году
Начинаете изучать C#? Мы подобрали для вас 7 лучших книг, которые помогут освоить язык и стать успешным разработчиком (внутри есть ссылки для скачивания).
🔗 Читать статью
🔗 Зеркало
Начинаете изучать C#? Мы подобрали для вас 7 лучших книг, которые помогут освоить язык и стать успешным разработчиком (внутри есть ссылки для скачивания).
🔗 Читать статью
🔗 Зеркало