class Animal
{
Animal Barsik;
Barsik = new Animal();
}
В чем разница между строками? Что они делают?
Animal Barsik;
Barsik = new Animal();
В первой появляется объект Барсик класса Animal, а во второй Барсику присваевается новый Класс? Что за бред?
C#
Можете объяснить по постому про создание классов?
>В чем разница между строками? Что они делают?
Они ничего не делают, данный фрагмент кода не скомпилируется.
Они ничего не делают, данный фрагмент кода не скомпилируется.
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
Но ок, предположим у нас есть две вот этих строки где-то в другом месте, не в классе 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
Похожие вопросы
- C# создание экземпляра класса с вложенным классом
- C# разница между созданием объекта родительского и производного класса.
- Разработка структуры класса
- Зачем разбивать код в C# на отдельные классы?
- Базовые классы C# Нужен код такой большой
- Можете по каждой строчке пройтись и объяснить за что каждая из них отвечает? C#
- Задание. В классе Program напишите следующие методы и вызовите их в главном методе Main:
- Нужна помощь с созданием первой игры на Unity
- Создание игры, нужны идеи или хотя бы стоит ли делать?
- За сколько времени можно выучить язык С# для создания игр ?