adityarao31 Ответов: 2

Проблемы во время занятий с#


Вопрос на практике
"Создать коллекцию под названием Народ, что это коллекция класса Person.Элементы в коллекции должны быть доступны через строковый индексатор,который является именем человека, идентичным этому человеку.Свойство name.

Я нашел ответ в конце книги, но он был неполным.Этот код я вставляю сюда

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BVCSharpPCh11
{
    public class person
    {
        private string name;
        private int age;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    }

    public class People : DictionaryBase
    {
        public void Add(person newPerson) => Dictionary.Add(newPerson.Name, newPerson);
        public void remove(string name) => Dictionary.Remove(name);
        public person this[string name]
        {
            get
            {
                return (person)Dictionary[name];
            }
            set
            {
                Dictionary[name] = value;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}


Что мне теперь писать в главной функции?

Что я уже пробовал:

public person this[string name]
       {
           get
           {
               return (person)Dictionary[name];
           }
           set
           {
               Dictionary[name] = value;
           }
       }


Этот синтаксис я вообще не понимал.Я опытный программист на C++, но все еще нахожу это трудным для понимания

2 Ответов

Рейтинг:
18

OriginalGriff

Словарь состоит из двух элементов: Ключ и ценность.
Каждый ключ уникален и служит для идентификации конкретной записи, содержащей значение.
Например, словарь клиентов может содержать имя клиента (строку) в качестве ключа и сведения о клиенте (адрес, кредитный лимит, баланс, счета-фактуры и т. д.) В качестве значения.
Поэтому, когда вам нужны были сведения о клиенте, вы могли бы получить доступ к словарю, используя имя клиента:

customer = customerDictionary["John Smith"]
Ваш код делает то же самое:
return (person)Dictionary[name];
Извлеките данные для человека, называемого "имя", и приведите их к экземпляру класса Person. верните это.
Dictionary[name] = value;
Сохраните экземпляр Person для человека с именем "name"

Все остальное-это определение индексатора, которое заставляет ваш словарь работать::
AccessSpecifier TypeOfValue this[TypeOfKey NameOfKeyVariable]
   { 
   Getter;   // Sets the Dictionary Entry
   Setter;   // Retrieves the Dictionary entry
   }

В вашем случае, это public собственность, которая содержит в себе Person Значение, а ключ-это string.


Рейтинг:
0

adityarao31

Спасибо за ваш ответ, я понял объяснение.И понял, что не знаю
концепция индексатора.
Не могли бы вы сказать мне, какой код я должен написать внутри основной функции?
Также просто в общих чертах скажите мне, что такое индексатор и для чего он используется? Чтобы я мог учиться
это основательно.