Заполнение списка структур в разных пустотах - PullRequest
0 голосов
/ 02 июля 2018

У меня быстрый вопрос о добавлении элементов в новый список, поэтому у меня есть следующий код:

Public struct testType
{
    public string title
    public string names
}

public List<testType> testlist= new List<testType>();

private void readTitles(string line)                                                                             
{
    string[] substrings = line.Split(new string[] { "\",\"" }, StringSplitOptions.None);
    testType temp = new testType();
    if (substrings.Length > 0)
        for (int i= 0;i<substrings.Length;i++)
        {
            temp.title= substrings;
            testlist.Add(temp);
        }
    else
        temp.title= "";
}

private void readNames(string line)                                                        
{
    string[] substrings = line.Split(new string[] { "\",\"" }, StringSplitOptions.None);
    testType temp = new testType();
    if (substrings.Length > 0)
        for (int i = 0; i < substrings.Length; i++)                                       
        {
            temp.names= substrings[i];
            testlist.Add(temp);
        }
    else
        temp.names= "";
}

Итак, видно, что список тестов будет заполнен как названиями, так и названиями. Он будет заполняться заголовками и именами, имеющими значение null. Затем имена, заполненные заголовками, будут иметь значение null. Как добавить имена в созданный список, не добавляя новую строку в список тестов с нулевыми значениями?

1 Ответ

0 голосов
/ 02 июля 2018

Есть ли какая-то особая причина, по которой вы читаете названия и имена разными способами?

Очевидное решение - просто прочитать оба одновременно в одном и том же методе, затем вы можете создать один экземпляр testType с заполненными обоими свойствами. Я предполагаю, что заголовков всегда будет столько же, сколько и имен, и что порядок в строках предсказуем:

public struct testType
{
    public string title
    public string name
}

public List<testType> testlist = new List<testType>();

private void readData(string titlesLine, string namesLine)  
{
    string[] titles = titlesLine.Split(new string[] { "\",\"" }, StringSplitOptions.None);
    string[] names = namesLine.Split(new string[] { "\",\"" }, StringSplitOptions.None);

    for (int i = 0; i < titles.Length; i++)
    {
        testType temp = new testType();
        temp.title = titles[i];
        temp.name = names[i];
        testlist.Add(temp);
    }
}

РЕДАКТИРОВАТЬ: альтернативный (но менее рекомендуемый) подход. Если вы действительно не можете / не хотите объединить два метода в один, вы можете вызвать их по отдельности и написать код, как показано ниже, при условии, что вы всегда вызываете readTitles перед readNames и всегда предоставляете данные в одном и том же порядке. каждый раз.

public struct testType
{
    public string title
    public string name
}

public List<testType> testlist = new List<testType>();

private void readTitles(string titlesLine)  
{
    string[] titles = titlesLine.Split(new string[] { "\",\"" }, StringSplitOptions.None);

    for (int i = 0; i < titles.Length; i++)
    {
        testType temp = new testType();
        temp.title = titles[i];
        testlist.Add(temp);
    }
}

private void readNames(string namesLine)
{
    string[] names = namesLine.Split(new string[] { "\",\"" }, StringSplitOptions.None);

    for (int i = 0; i < testlist.Count; i++)
    { 
        testlist[i].name = names[i];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...