Структура данных в C # для нескольких свойств без создания класса - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужна структура данных в C #, которая может содержать 2 вещи: -

  1. Путь к файлу ресурса
  2. Язык файла ресурсов

После этого мне нужно перебрать список такой структуры.

Создает ли класс, как показано ниже, единственный вариант?

public class ResourceFile
    {
        public string FilePath { get; set; }

        public string Language { get; set; }
    }

И затем создать список следующим образом:

var list = new List<ResourceFile>()

Я не хочу создавать в проекте дополнительный файл класса для этого незначительного требования.

Другие варианты, которые я рассмотрел, но не уверен, что они верны: -

  1. Словарь
List<Dictionary<string, string>>

Но ключ и значение не связаны в типичной взаимосвязи пары ключ-значение.
В этом случае путь не может быть ключом к языку.

Tuple
List<Tuple<string, string>>

Это, вероятно, самое близкое к выполнению моего требования.
Однако, поскольку я никогда ранее не использовал Tuple, не уверен, что мой вариант использования действителен для использования Tuples.

Так что здесь я могу иметь список Tuples.
Каждый кортеж будет содержать 2 значения.Первым значением будет путь, а вторым - язык.

Есть ли другие варианты?

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

С помощью c #> 7.0 вы можете использовать синтаксис кортежей следующим образом:

var files = new List<(string FilePath, string FileLanguage)>();
files.Add((FilePath: "path", FileLanguage: "lang"));
Console.WriteLine($"File 0 -  PATH: {files[0].FilePath}, LANG: {files[0].FileLanguage}");

Он действует как ValueTuples, но здесь вы можете иметь более двух элементов и каждый элемент может быть назван.

Подробнее здесь: https://docs.microsoft.com/dotnet/csharp/tuples

1 голос
/ 25 сентября 2019

Идея вашего списка кортежей - хороший вариант, если вы не хотите создавать новый класс.Кортежи - это структуры данных, которые просто помогают группировать информацию, не применяя структуру ключа, значения, как вы упомянули.

Единственное, что вы должны иметь в виду при использовании кортежей, это то, что они неизменны - то есть вы не можете добавлять,удалить, поменять и т. д. элементы внутри кортежа после назначения.Список, однако, является изменяемым, поэтому вы можете добавлять или удалять кортежи из списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...