Kar*_*Ali 7 c# datetime tuples get set
我有一个属性,返回两个类型的项目DateTime.返回这些值时,我必须将它们作为Item1和引用Item2.如何使用自定义名称返回,例如
filter?.DateRanges.From
filter?.DateRanges.To
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
用法:
var from = filter?.DateRanges.Item1;
var to = filter?.DateRanges.Item2;
Run Code Online (Sandbox Code Playgroud)
Mat*_*son 17
像这样:
public (DateTime Start, DateTime End) DateRanges
{
get
{
return (DateTime.MinValue, DateTime.MaxValue);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这需要最新版本的C#和.Net.
顺便提一下,请注意这种使用模式:
var from = filter?.DateRanges.Start;
var to = filter?.DateRanges.End;
Run Code Online (Sandbox Code Playgroud)
这是低效的,因为它会导致创建两个相同的元组.
这个更好:
var range = filter?.DateRanges;
if (range.HasValue)
{
var from = range.Value.Start;
var to = range.Value.End;
}
Run Code Online (Sandbox Code Playgroud)
但请注意,元组不能为空(它们是值类型),因此您可以像这样编写它:
if (filter != null)
{
var range = filter.DateRanges;
var from = range.Start;
var to = range.End;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7239 次 |
| 最近记录: |