C#

Можете объяснить по постому про создание классов?

class Animal
{
Animal Barsik;

Barsik = new Animal();
}


В чем разница между строками? Что они делают?
Animal Barsik;
Barsik = new Animal();

В первой появляется объект Барсик класса Animal, а во второй Барсику присваевается новый Класс? Что за бред?
Angel Death
Angel Death
5 103
>В чем разница между строками? Что они делают?
Они ничего не делают, данный фрагмент кода не скомпилируется.
Пётр Черкашин
Пётр Черкашин
56 353
Лучший ответ
Angel Death дело не в компиляции, что они значат я спрашиваю
Как тут уже объяснили выше - в том виде как написано смысла не имеет, т.к. не скомпилируется
Но ок, предположим у нас есть две вот этих строки где-то в другом месте, не в классе Animal, а для примера где-то в Main

Animal Barsik;
Barsik = new Animal();

Если совсем по-простому, на пальцах:

1-я строка
>В первой появляется объект Барсик класса Animal
Здесь никакой объект не появляется, здесь объявляется переменная типа Animal. Если еще проще - ссылка на какой-то объект типа Animal, но она никуда не ведет, ее значение сейчас null

>а во второй Барсику присваевается новый Класс?
Класс никуда нельзя присвоить. Присвоить можно экземпляр класса, а точнее - ссылку на него. Именно это здесь и происходит. Здесь создается экземпляр класса Animal и по завершению создания, оператор new возвращает ссылку на только что созданный объект, которая уже присваивается переменной Barsik объявленной ранее.

Ну и далее чтобы понятнее было что к чему, опять же, "на пальцах":

Animal Barsik;
Barsik = new Animal();
Barsik.Age = 5; // не знаю что там в классе Animal, но для примера предположим что там есть возраст Age

Console.WriteLine(Barsik.Age); // выведет 5

Animal Tom;
Tom = Barsik;

Barsik.Age = 7; // меняем только у Барсика, Тома не трогаем

Console.WriteLine(Barsik.Age); // выведет 7
Console.WriteLine(Tom.Age); // тоже выведет 7, т.к. Tom указывает на тот же самый объект в памяти, что и Barsik
Сергей Шихов
Сергей Шихов
5 002