Темы для обсуждения

№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#?

•Использование внешних параметров

• Использование массивов или структур

  • Попробуйте найти минимальное и максимальное значения в массиве

Ссылка: https://stackoverflow.com/questions/tagged/c%23