Existe um tipo que contém um Start- e End-DateTime? [duplicado]

Nov 11 2020

Eu tenho um método que atualmente leva um DateTime startDatee DateTime endDate. Seria muito bom se houvesse um tipo de dados que consistisse em dois, de DateTimemodo que meu método tivesse apenas um valor em vez de dois.

Existe algo assim ou eu apenas tenho que usar duas DateTimevariáveis?

Estou procurando especificamente um único tipo, mas se não for possível, acho que tenho que ir com o Tupleou criar o meu próprio Class.

ATUALIZAR

Depois de examinar isso por mais algum tempo, finalmente percebi que não há uma resposta perfeita para minha pergunta. Então, agora eu criei minha própria classe contendo os dois valores, mas uma tupla funcionaria perfeitamente.

Aqui está o código (quase igual ao FooClass do StepUp ):

public class DatePeriod
{
    public DateTime? Start { get; set; }
    public DateTime? End { get; set; }

    public DatePeriod(DateTime? startDate, DateTime? endDate)
    {
        Start = startDate;
        End = endDate;
    }
}

Respostas

2 StepUp Nov 11 2020 at 15:40

Uma das maneiras é criar uma classe que contenha os dados necessários:

public class FooClass
{
    public DateTime StartDate { get; private set; }
    public DateTime EndDate { get; private set; }

    public FooClass(DateTime startDate, DateTime endDate)
    {
        StartDate = startDate;
        EndDate = endDate;
    }
}

E use-o como um argumento:

public void YourMethod(Fooclass foo)
{
}

E um exemplo de uso de Tupla

public void Tuple(Tuple<DateTime, DateTime> test) 
{}

Além disso, você pode ler mais padrões DTO.

2 MaikelVreugde Nov 11 2020 at 15:46

Você pode trabalhar com um modelo autodefinido:

public class CustomDateRange
{
    public DateTime Start {get;set;}
    public DateTime End {get;set;}
}

Você pode trabalhar com uma classe de Tupla:

var range = new Tuple <DateTime, DateTime>(start, end)

Ou você pode até trabalhar com um tipo de tupla:

(DateTime, DateTime) range = (start, end)

Talvez haja ainda mais opções, mas essas são as que me vieram à mente no momento.