Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Dictionary<TKey,TValue> содержит коллекцию пар «ключ-значение». Ее метод Add принимает два параметра: один для ключа, другой — для значения. Для инициализации Dictionary<TKey,TValue> или любой коллекции, метод Add которой принимает несколько параметров, можно заключить каждый набор параметров в скобки, как показано в приведенном ниже примере. Другой вариант — использовать инициализатор индекса, как показано также в следующем примере.
Примечание.
Основное различие между этими двумя способами инициализации коллекции заключается в том, как обрабатываются повторяющиеся ключи, например:
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
метод Add вызывает ArgumentException: 'An item with the same key has already been added. Key: 111', а вторая часть примера — общедоступный метод индексатора чтения и записи, тихо перезаписывает уже имеющуюся запись с тем же ключом.
Пример
В следующем примере кода Dictionary<TKey,TValue> инициализируется экземплярами типа StudentName. Первая инициализация использует метод Add с двумя аргументами. Компилятор создает вызов метода Add для каждой пары ключа int и значения StudentName. Во втором случае используется общедоступный метод индексатора для чтения и записи класса Dictionary.
public class HowToDictionaryInitializer
{
class StudentName
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
public int ID { get; set; }
}
public static void Main()
{
var students = new Dictionary<int, StudentName>()
{
{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 112, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
{ 113, new StudentName { FirstName="Andy", LastName="Ruth", ID=198 } }
};
foreach(var index in Enumerable.Range(111, 3))
{
Console.WriteLine($"Student {index} is {students[index].FirstName} {students[index].LastName}");
}
Console.WriteLine();
var students2 = new Dictionary<int, StudentName>()
{
[111] = new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 },
[112] = new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } ,
[113] = new StudentName { FirstName="Andy", LastName="Ruth", ID=198 }
};
foreach (var index in Enumerable.Range(111, 3))
{
Console.WriteLine($"Student {index} is {students2[index].FirstName} {students2[index].LastName}");
}
}
}
Обратите внимание на две пары фигурных скобок в каждом элементе коллекции в первом объявлении. Внутренние фигурные скобки заключают инициализатор объекта для StudentName, а внешние фигурные скобки заключают инициализатор для пары "ключ-значение", добавляемой в studentsDictionary<TKey,TValue>. И наконец, целый инициализатор коллекции для словаря заключается в фигурных скобках. Во второй инициализации левая часть оператора присваивания является ключом, а правая часть — значением, использующим инициализатор объекта для StudentName.
Использование искусственного интеллекта для создания тестовых данных для коллекций словарей
Вы можете использовать средства ИИ, такие как GitHub Copilot, для быстрого создания тестовых данных словаря и сценариев проверки в проектах C#.
Ниже приведен пример запроса, который можно использовать в Visual Studio Copilot Chat.
Generate data collections for tests to create a separate Dictionary<int, Student> containing 10 valid Student records and 5 invalid records.
- Valid records should have realistic Name and Grade values.
- Invalid records should include cases such as missing Name, Grade < 0, or Grade > 100.
- This dictionary should be used only for testing purposes and not modify existing production code.
- Generate test code that utilizes this test data for validation scenarios.
- Call test method to run the test.
Ознакомьтесь с предложениями Copilot, прежде чем применять их.
Дополнительные сведения о GitHub Copilot см. в часто задаваемых вопросых о GitHub.