2017-02-22 20 views
0

私はWindowsフォームアプリケーションで作業していますが、問題があります。 GetDataFromFileメソッドでは2つのコレクションを返しますが、buttton startではどのようにしてそれらを取得して、表示されるようにすることができます。 メソッドから返された結果を両方取得する

は、事前にありがとうとごめん、私の質問は愚かであるならば、私は初心者だとあなたは、同様の方法からあなたのデータ型を受け取るためにタプルを使用することができます

public Tuple<List<string>,List<string>> GetDataFromFile() 
{ 
    XDocument doc = XDocument.Load("NotificationTasks.xml"); 
    var dates = doc.Descendants("Date"); 
    var hours = doc.Descendants("Time"); 
    var hoursCollection = new List<string>(); 
    var dateCollection = new List<string>(); 

    foreach (var date in dates) 
    { 
     dateCollection.Add(date.Value); 
    } 

    foreach (var hour in hours) 
    { 
     hoursCollection.Add(hour.Value); 
    } 

    return Tuple.Create(hoursCollection,dateCollection); 
} 


    private void btnStart_Click(object sender, EventArgs e) 
    { 

//here I must use the two collections from GetDataFromFile() 

     foreach (var dates in hoursCollection) 
     { 
      if (dates == DateTime.Now.Date) 
      { 
       foreach (var hours in hoursCollection) 
       { 
        StartNotificating(new TimeSpan(hours)); 
       } 
      } 
     } 
    } 

答えて

0

それを把握することはできません。

参考:https://msdn.microsoft.com/en-us/library/system.tuple(v=vs.110).aspx

public Tuple<List<string>,List<string>> GetDataFromFile() 
{ 
    XDocument doc = XDocument.Load("NotificationTasks.xml"); 
    var dates = doc.Descendants("Date"); 
    var hours = doc.Descendants("Time"); 
    var hoursCollection = new List<string>(); 
    var dateCollection = new List<string>(); 

    foreach (var date in dates) 
    { 
     dateCollection.Add(date.Value); 
    } 

    foreach (var hour in hours) 
    { 
     hoursCollection.Add(hour.Value); 
    } 

    return Tuple.Create(hoursCollection,dateCollection); 
} 


    private void btnStart_Click(object sender, EventArgs e) 
    { 

     //here I must use the two collections from GetDataFromFile() 
     Tuple<List<String>,List<String>> t = GetDataFromFile(); 
     List<String> hoursCollection = t.Item1; 
     List<String> dateCollection = t.Item2; 

     foreach (var dates in hoursCollection) 
     { 
      if (dates == DateTime.Now.Date) 
      { 
       foreach (var hours in hoursCollection) 
       { 
        StartNotificating(new TimeSpan(hours)); 
       } 
      } 
     } 
    } 
2

あなたはデータを返すために、独自のクラスを定義することができます。

変更するには、データを取得するために使用方法:

public FileData GetDataFromFile() 
{ 
    // read file etc... 
    return new FileData(hoursCollection, datesCollection); 
} 

あなたハンドラは:

private void btnStart_Click(object sender, EventArgs e) 
{ 
    FileData fileData = GetDataFromFile(); 
    var hoursCollection = fileData.Hours; 
    var dateCollection = fileData.Dates; 
} 

プロパティの名前を持つクラスを使用すると、のItem1Item2を混同する可能性が少なくなります。

関連する問題