Поле класса имеет возвращаемый тип, что и сам класс

172
30 марта 2019, 09:10

Допустим создан класс Person, у которого есть какие-то поля. И одно из полей имеет тип класса, в который он и входит. Как руководствоваться данным полем. Какие значение оно может принимать и вообще в каких случаях данная реализация нужна?

Answer 1

Во-первых, у вас здесь не поля, а свойства. Важно разбираться. Джефри Рихтер ("CLR via C#"): Можно считать свойства «умными» полями, то есть полями с дополнительной логикой. <...> Cвойства выглядят как поля, на самом деле являясь методами.Важно разбираться.

Во-вторых, создавать поле/свойство Person.person не рекомендую, так как желательно, чтобы из названия поля можно было понять для чего оно предназначено.

Поле/свойство определенного типа может принимать только значения этого типа, в данном случае Person.

Ну и для чего это нужно, например:

 public class Person
    {
        public int Age{get; set;}
        public string Name{get; set;}
        public Person Friend1{get; set;}  // Это значит, что Friend1 и Friend2 являются объектами типа Person, 
        public Person Friend2{get; set;}  //  и у них также есть свойства  Age, Name, Friend1, Friend2 (не обязательно заполненные)
    }        
    static void Main()
{
    Person person1 = new Person();
    Person person2 = new Person();
    Person person3 = new Person(); //Создали 3 человек
    person1.Name = "Alex";        
    person1.Age = 12;
    person1.Friend1 = person2;
    person1.Friend2 = person3; // person1 содержит 2 ссылки на своих друзей - person2 и person3
    person2.Name = "Dan";
    person2.Age = 13;
    // person2.Friend1="Alex";  - выдаст исключение, потому что Friend1 должно быть типом Person
    person2.Friend1 = person1; // person2 дружит только с person1, второго друга нет
    person3.Name = "Bill";    // у person3 вообще нет друзей
    person3.Age = 14;
}

Пример очень утрированный, но суть думаю ясна.

READ ALSO
Подходы EF в Asp net core

Подходы EF в Asp net core

Как я понимаю, есть 3 подхода в ef: Code-First,Model-First,Database-FirstВ чем преимущество подходов (к примеру code-first), если можно к примеру просто создать бд в asp

153
Создание хранилища объектов

Создание хранилища объектов

Товарищи, встал перед такой проблемой:

173
Обновление данных в RedBeanPHP

Обновление данных в RedBeanPHP

Ребят, как мне сделать обновление в базу данных в RedBean? При заходе на статью он видит её id и какие то поля из бд, но при нажатии на кнопку id становится...

193
Как заменить ссылку в меню плагина на Wordpress?

Как заменить ссылку в меню плагина на Wordpress?

Есть сайт на wordpress с установленным плагином idcommerce в котором есть функция вывода верхнего меню

157