/ / Appuntamento? Metodo di estensione AddDays - c #, datetime, metodi di estensione

Appuntamento? Metodo di estensione di addDays - c #, datetime, extension-methods

Voglio scrivere un metodo di estensione che aggiunge un giorno a un DateTime Nullable, ma modifica la data stessa.

Voglio usarlo come segue:

someDate.AddOneDay();

Questo modifica direttamente il valore di someDate.

Il codice che ho scritto inizialmente era:

public static DateTime? AddOneDay(this DateTime? date)
{
if (date.HasValue)
{
date.Value = date.Value.AddDays(1);
}

return null;
}

ma questo non funziona poiché il riferimento viene modificato, chiamandolo così non cambierà il valore di someDate.

C'è un modo per raggiungere questo obiettivo ed evitare il codice come:

someDate = someDate.AddOneDay();

Inoltre stavo pensando a qualche setter delle proprietà DateTime, ma non hanno alcun ..

public int Day { get; }
public int Month { get; }
public int Year { get; }

risposte:

6 per risposta № 1

Non puoi "t DateTime è immutabile e dovrebbe rimanere così.

Basta fare:

someDate = someDate.AddOneDay();

E se vuoi essere più specifico, puoi rinominare la tua funzione in:

DateTime? someDate = someDate.AddOneDayOrDefault();

3 per risposta № 2

vecchia scuola %)

public static void AddOneDay(ref DateTime date)
{
if (date != null) date = date.AddDays(1);
}

utilizzo:

DateTime date = DateTime.Now;
AddOneDay(ref date);

UPD

versione a una riga del metodo:

public static void AddOneDay(ref DateTime date) { date = date.AddDays(1); }

0 per risposta № 3

C # supporta una funzione simile, anche per valori mutabili, che è l'uso di += su valori nullable:

DateTime? date = GetDate();
var oneDay = TimeSpan.FromDays(1);
date += oneDay;