3. Основы ООП Flashcards
Как определить класс на C#?
class MyClass { }
В чем разница между классом и объектом?
Объект — это экземпляр класса. Класс — это «чертеж» объекта.
В чем ошибка? Как исправить? class A { B b; } class B { int c; } var a = new A(); Console.WriteLine(a.b.c)
В поле b находится null и поэтому будет NullReferenceException
В чем ошибка?
string a;
var parts = a.Split(“ “);
Как написать SafeSplit, чтобы не было NullReferenceException в коде
string a;
var parts = a.SafeSplit(“ “);
В переменной a лежит null и полэтому будет NullReferenceException
SafeSplit должен быть методом-расширения. В этом случае он будет статическим и в нем можно обработать ситуацию a == null. При этом его можно будет вызвать как указано.
Как сделать в проекте 2 класса с одним именем?
Разместить их в разных пространствах имен (namespaces)
В чем ошибка? Как исправить?struct A { B b; }struct B { int c; }var a = new A();Console.WriteLine(a.b.c)
Ошибки нет, так как это struct.
В чем ошибка в коде?public struct Point{ public Point() { X = 0; Y = 0; } public int X; public int Y;}
У структуры нельзя переопределить конструктор по-умолчанию.
Что делать, если надо передать структуру в метод по ссылке?
Использовать ref. Такого ответа достаточно. Более сложный вариант — boxing. Для этого потребуется upcast к некоторому интерфейсу или object.
Что такое boxing?
Неявное копирование структуры в кучу. Например, при upcast в object или реализуемый интерфейс.
Пусть Point — это структура, содержащая публичные поля X, Y и метод GetLength. В каких строчках есть ошибки и почему?Point p;p.X = 5;var length = p.GetLength();
Только в третьей. Потому что нельзя использовать методы не инициализированной полностью структуры. А вот присвоить значение полю можно.
Что означает ключевое слово private?
Доступ к помеченному члену класса возможен только изнутри класса
Как модифицировать значения private-полей извне класса?
Напрямую — никак. Надо использовать методы класса, предусмотренные его автором, которые гарантируют целостность данных.
Что такое отложенная ошибка?
Это нарушение целостности данных, приводящее к ошибке не в момент нарушения, а намного позже
Что такое свойство?
Это пара методов: getter и setter, которые можно синтаксически использовать как поле, т.е. получать и присваивать ему значения
Сколько полей и методов будет сгенерировано компилятором при обработке этого свойства и какой у них будет уровень доступа (private, public)?public string Name {get; private set;}
Одно приватное поле, один публичный метод, один приватный метод