C# 从方法中获取两个返回的结果

C# 从方法中获取两个返回的结果,c#,.net,winforms,C#,.net,Winforms,我正在使用windows窗体应用程序,我遇到了一个问题。在GetDataFromFile方法中,我返回了2个集合,但在Button start上,我如何获得它们并使用它们,如图所示 提前谢谢你,如果我的问题很愚蠢,我很抱歉,但我是个新手,无法理解 public Tuple<List<string>,List<string>> GetDataFromFile() { XDocument doc = XDocument.Load("Notification

我正在使用windows窗体应用程序,我遇到了一个问题。在GetDataFromFile方法中,我返回了2个集合,但在Button 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));
                }
            }
        }
    }
公共元组GetDataFromFile() { XDocument doc=XDocument.Load(“NotificationTasks.xml”); var日期=单据子代(“日期”); var小时数=单据子体(“时间”); var hourscolection=新列表(); var dateCollection=新列表(); foreach(日期中的var日期) { dateCollection.Add(date.Value); } foreach(以小时为单位的var小时) { hoursCollection.Add(小时值); } 返回Tuple.Create(hourscolection、dateCollection); } 私有void btnStart_单击(对象发送方,事件参数e) { //这里我必须使用GetDataFromFile()中的两个集合 foreach(以小时为单位的var日期集合) { if(dates==DateTime.Now.Date) { foreach(以小时为单位的var小时数集合) { 开始通知(新的时间跨度(小时)); } } } }
您也可以使用元组从方法接收数据类型

参考:

公共元组GetDataFromFile() { XDocument doc=XDocument.Load(“NotificationTasks.xml”); var日期=单据子代(“日期”); var小时数=单据子体(“时间”); var hourscolection=新列表(); var dateCollection=新列表(); foreach(日期中的var日期) { dateCollection.Add(date.Value); } foreach(以小时为单位的var小时) { hoursCollection.Add(小时值); } 返回Tuple.Create(hourscolection、dateCollection); } 私有void btnStart_单击(对象发送方,事件参数e) { //这里我必须使用GetDataFromFile()中的两个集合 Tuple t=GetDataFromFile(); 列表小时集合=t.Item1; 列表日期集合=t.Item2; foreach(以小时为单位的var日期集合) { if(dates==DateTime.Now.Date) { foreach(以小时为单位的var小时数集合) { 开始通知(新的时间跨度(小时)); } } } }
您也可以使用元组从方法接收数据类型

参考:

公共元组GetDataFromFile() { XDocument doc=XDocument.Load(“NotificationTasks.xml”); var日期=单据子代(“日期”); var小时数=单据子体(“时间”); var hourscolection=新列表(); var dateCollection=新列表(); foreach(日期中的var日期) { dateCollection.Add(date.Value); } foreach(以小时为单位的var小时) { hoursCollection.Add(小时值); } 返回Tuple.Create(hourscolection、dateCollection); } 私有void btnStart_单击(对象发送方,事件参数e) { //这里我必须使用GetDataFromFile()中的两个集合 Tuple t=GetDataFromFile(); 列表小时集合=t.Item1; 列表日期集合=t.Item2; foreach(以小时为单位的var日期集合) { if(dates==DateTime.Now.Date) { foreach(以小时为单位的var小时数集合) { 开始通知(新的时间跨度(小时)); } } } }
您可以定义自己的类来返回数据:

public class FileData
{
    public FileData(IEnumerable<string> hours, IEnumerable<string> dates)
    {
        Hours = hours;
        Dates = dates;
    }

    public IEnumerable<string> Hours { get; }
    public IEnumerable<string> Dates { get; }
}
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;
}

使用具有属性名称的类将减少混淆
元组的
Item1
Item2
的可能性。您可以定义自己的类以返回数据:

public class FileData
{
    public FileData(IEnumerable<string> hours, IEnumerable<string> dates)
    {
        Hours = hours;
        Dates = dates;
    }

    public IEnumerable<string> Hours { get; }
    public IEnumerable<string> Dates { get; }
}
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;
}
使用具有属性名称的类将减少混淆
元组的
Item1
Item2
的可能性