为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 C# 中返回命名元组?

如何在 C# 中返回命名元组?

C#
繁花如伊 2021-11-14 14:47:49
我有一个属性返回两个类型的项目DateTime。返回这些值时,我必须将它们引用为Item1and Item2。我如何返回自定义名称,例如filter?.DateRanges.Fromfilter?.DateRanges.To public Tuple<DateTime, DateTime> DateRanges{    get    {        From = DateTime.Now.AddDays(-1).Date.AddMonths(-1);        To = DateTime.Now.AddDays(-1).Date;        if (Preset != 0)        {            if (Preset == DatePreset.SpecificRange)            {                From = From.Date;                To = To.Date;            }            else            {                var dateRange = DateTime.Today.AddDays(-1).GetDateRangeByPreset(Preset);                From = dateRange.From;                To = dateRange.To;            }        }        return new Tuple<DateTime, DateTime>(From, To);    }用法:var from = filter?.DateRanges.Item1;var to = filter?.DateRanges.Item2;
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

像这样:


public (DateTime Start, DateTime End) DateRanges

{

    get

    {

        return (DateTime.MinValue, DateTime.MaxValue);

    }

}

注意:这需要最新版本的 C# 和 .Net。


顺便提一下,注意这种使用模式:


var from = filter?.DateRanges.Start;

var to = filter?.DateRanges.End;

这是低效的,因为它会导致创建两个相同的元组。


这个更好:


var range = filter?.DateRanges;


if (range.HasValue)

{

    var from  = range.Value.Start;

    var to    = range.Value.End;

}

但是请注意,元组不能为空(它们是值类型),因此您可以这样编写:


if (filter != null)

{

    var range = filter.DateRanges;

    var from  = range.Start;

    var to    = range.End;

    ...

}


查看完整回答
反对 回复 2021-11-14
?
月关宝盒

TA贡献1772条经验 获得超5个赞

class Program

{

    static void Main(string[] args)

    {

        test t = new test();

        Console.WriteLine(t.NamedTuple.start);

        Console.WriteLine(t.NamedTuple.stop);

        Console.Read();

    }

}


class test

{

    DateTime From;

    DateTime To;


    public (DateTime start, DateTime stop) NamedTuple

    {

        get

        {

            From = DateTime.Now.AddDays(-1).Date.AddMonths(-1);

            To = DateTime.Now.AddDays(-1).Date;

            return (From, To);

        }


    }

}


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信