Темы для обсуждения
№1. Когда использовать структуру и класс
• структуры — это типы значений, которые могут содержать данные и функции.
• структуры являются типами значений и не требуют выделения кучи.
• структуры хранят свои данные непосредственно в структуре, классы хранят ссылку на динамически выделяемый объект.
• структуры полезны для небольших структур данных
• структуры могут влиять на производительность
• Конструкторы вызываются с помощью оператора new, но при этом не выделяется память в куче.
• Конструктор структуры просто возвращает само значение структуры (обычно во временное место в стеке), и это значение затем копируется по мере необходимости.
• В классах несколько переменных могут иметь ссылку на один и тот же объект.
• Операции с одной переменной могут воздействовать на объект, на который ссылается другая переменная.
• В структурах каждая переменная имеет собственную копию данных, и операции над одной не могут повлиять на другую.
• структуры не поддерживают указанное пользователем наследование и неявно наследуются от типа object
№2. Как бы вы подсчитали количество вхождений строки в строку?
• Строковый тип является запечатанным типом класса, который наследуется непосредственно от объекта. Экземпляры класса string представляют строки символов Unicode.
• Значения строкового типа могут быть записаны как строковые литералы.
• Ключевое слово string — это просто псевдоним предопределенного класса System.String, поэтому вы можете использовать string name = «Fred»; или Строковое имя = «Фред»;
• Аналогичным образом вы можете использовать string.Concat() или String.Concat().
• Используйте строку для имен переменных
• Используйте String для методов класса и ссылки
№3: Шифрование/дешифрование строки в .NET
- Используйте встроенный класс криптографии С# (DES, RSA и т. д.)
#4: Как сделать Texbox, который принимает только цифры?
- Используйте NumericUp Down
- Обработка события KeyPress (Text.isDigit)
- Обработка события Text_Changed (не рекомендуется)
№5. Как анализировать XML-файлы?
• Ссылка System.Xml
• Используйте XmlReader для анализа текстовой строки.
• Вам нужно будет иметь представление об элементах и атрибутах XML для этого примера.
• Используйте методы XmlReader для чтения XML-данных.
№6. Как проверить, является ли число степенью двойки
- Используйте регулярное выражение или foreach
№7. Как получить индекс текущей итерации цикла foreach?
- Поддерживайте счетчик и увеличивайте его вручную
- Некоторые типы коллекций предоставляют IndexOf()
№8. Как округлить десятичное значение до 2 разрядов для вывода?
• Используйте спецификаторы строкового формата.
•(“#.##”)
•("{0:0.00}", значение)
•(“n2”)
•("{0:c}", значение)
#9: В чем разница между строкой и строкой
• Строковый тип является запечатанным типом класса, который наследуется непосредственно от объекта. Экземпляры класса string представляют строки символов Unicode.
• Значения строкового типа могут быть записаны как строковые литералы.
• Ключевое слово string — это просто псевдоним предопределенного класса System.String, поэтому вы можете использовать string name = «Fred»; или Строковое имя = «Фред»;
• Аналогичным образом вы можете использовать string.Concat() или String.Concat().
• Используйте строку для имен переменных
• Используйте String для методов класса и ссылки
№ 10. Цикл C# — разрыв или продолжение
• Break полностью выйдет из цикла, Continue просто пропустит текущую итерацию, а затем снова проверит оператор while.
№11. Как получить собственный IP-адрес в C#
- проверить частный IP-адрес
- Используйте Dns.GetHostEntry, IPAddress и AddressList
- Игнорировать начальный адрес APIPA 16.254
- Проверить общедоступный IP-адрес — совершать внешние вызовы
№12. Удаление дубликатов из массива
• Используйте LINQ (используйте DistinctElement)
• Используйте список
№13. Как получить путь к приложению в консольном приложении C#?
• Используйте отражение, чтобы получить путь выполнения сборки
• Передайте, что IO.Path.GetDirectoryName
№14. Разница между абстрактными и виртуальными функциями
- Абстрактный метод не имеет реализации и ДОЛЖЕН быть переопределен
- Виртуальные методы МОГУТ иметь реализацию, но не являются обязательными, и их можно переопределить.
- Вы не можете вызывать base,method() для абстрактных, но вы можете для виртуальных методов
№ 15. Как вычислить чей-то возраст в C#?
- Использовать библиотеку даты и времени, встроенную в С#
- Вычесть год рождения из текущего года
№16. Как отсортировать словарь по значению?
• Используйте LINQ
• Сортирует в новый объект
#17: Вызов базового конструктора в C#
• Ссылка: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/base
№ 18. Разница между ключевыми словами ref и out
- ref вызывает передачу аргумента по ссылке, а не по значению. Он предоставляет ссылку на исходное значение, и изменения, сделанные в методе, будут сделаны исходным объектом.
- аргументы, передаваемые как ref, должны быть инициализированы до того, как они будут переданы
- out также вызывает передачу аргумента в качестве ссылки. Изменения, внесенные в параметры, также изменяются в источнике
- Передаваемые аргументы не нужно предварительно инициализировать
- Вызванный метод должен присвоить значение до возврата метода
№19. Как получить строковое значение перечисления?
- Используйте Enum.GetName()
- ИСПОЛЬЗОВАТЬ ToString
№20. Как вернуть несколько значений из функции в C#?
•Использование внешних параметров
• Использование массивов или структур
- Попробуйте найти минимальное и максимальное значения в массиве