O que é igual a DateTime.MinValue, então você também pode fazer DateTime myDate = DateTime.MinValueo mesmo: /
Lloyd
20
@Lloyd Na maioria das vezes ... mas não como um parâmetro padrão, DateTime.MinValue não é uma constante de tempo de compilação - mas o padrão (DateTime) / new DateTime () é.
Ricibob 29/08/19
12
Apenas para esclarecer o excelente comentário do @ Ricibob, porque é importante: se você estiver criando um método com um parâmetro opcional, poderá SOMENTE usar um default(DateTime)ou new DateTime(). Ambas são constantes de tempo de compilação , necessárias para valores de parâmetros opcionais. Se constantes de tempo de compilação não são necessários, em seguida default(DateTime), new DateTime()e DateTime.MinValuesão intercambiáveis.
Leanne
Respostas:
200
Não, eles são idênticos.
default(), para qualquer tipo de valor ( DateTimeé um tipo de valor) sempre chamará o construtor sem parâmetros.
FWIW; No C # 6, esse comportamento será alterado. O C # 6 apresenta construtores sem parâmetros para estruturas, que permitem que o comportamento newseja diferente do que default(T)fará.
Vcsjones
30
Pode-se argumentar que default(DateTime)é mais descritivo da intenção do programador e, portanto, mais favorável em geral.
Intrepidis
16
@vcsjones, isso foi removido antes do lançamento final do C # 6.0.
Nawfal 5/07
5
@nawfal Yeah. Provavelmente o melhor que aconteceu também.
Vcsjones
Esta resposta está errada IMO: as duas coisas são semanticamente idênticas, mas nenhuma delas chama um construtor - ambas as opções de sintaxe usaminitobj
Marc Gravell
22
Se você deseja usar o valor padrão para um parâmetro DateTime em um método, você pode usar apenas o padrão (DateTime).
Claro que o DateTime.MinValue não compila? Parâmetros opcionais devem ser constantes em tempo de compilação, o que MinValue não é. default (DateTime) e new DateTime () são válidos, porém. (o que é realmente engraçado, porque const DateTime x = default (DateTime) não é válido, pois os valores DateTime não podem ser declarados como constantes em tempo de compilação)
Jerri Kangasniemi
16
A resposta é não. Lembre-se de que, nos dois casos mdDate.Kind = DateTimeKind.Unspecified,.
Por favor, veja as 4 primeiras palavras da minha resposta.
Ben C
4
Eu argumentaria contra isso. O padrão DateTimeé útil como um valor não definido, com uma comparação simples com default(DateTime). Que uso é um 01/01/0001valor não padrão ?
Rawling
Tenha em mente que é DateTimeKind.Utc vez de DateTimeKind.Utc
Roberto
@ Roberto Obrigado, fixo.
jpaugh
-3
A maneira mais simples de entender é que DateTime é uma estrutura. Quando você inicializa uma estrutura, ela é inicializada com seu valor mínimo:DateTime.Min
Portanto, não há diferença entre default(DateTime)e new DateTime()eDateTime.Min
Não, as estruturas não são necessariamente inicializadas com seu valor mínimo. Eles são inicializados para todos os bits serem zero. Para alguns tipos, esse é o valor mais baixo; para outros, como tipos numéricos que podem ser negativos, não é nem perto do valor mínimo. E, claro, outros ainda não serão comparáveis e não terão um valor "mínimo".
DateTime.MinValue
, então você também pode fazerDateTime myDate = DateTime.MinValue
o mesmo: /default(DateTime)
ounew DateTime()
. Ambas são constantes de tempo de compilação , necessárias para valores de parâmetros opcionais. Se constantes de tempo de compilação não são necessários, em seguidadefault(DateTime)
,new DateTime()
eDateTime.MinValue
são intercambiáveis.Respostas:
Não, eles são idênticos.
default()
, para qualquer tipo de valor (DateTime
é um tipo de valor) sempre chamará o construtor sem parâmetros.fonte
new
seja diferente do quedefault(T)
fará.default(DateTime)
é mais descritivo da intenção do programador e, portanto, mais favorável em geral.initobj
Se você deseja usar o valor padrão para um parâmetro DateTime em um método, você pode usar apenas o padrão (DateTime).
A seguinte linha não será compilada:
Esta linha irá compilar:
fonte
A resposta é não. Lembre-se de que, nos dois casos
mdDate.Kind = DateTimeKind.Unspecified
,.Portanto, pode ser melhor fazer o seguinte:
A
myDate.Kind
propriedade é somente leitura, portanto, não pode ser alterada após a chamada do construtor.fonte
DateTime
é útil como um valor não definido, com uma comparação simples comdefault(DateTime)
. Que uso é um01/01/0001
valor não padrão ?A maneira mais simples de entender é que DateTime é uma estrutura. Quando você inicializa uma estrutura, ela é inicializada com seu valor mínimo:
DateTime.Min
Portanto, não há diferença entre
default(DateTime)
enew DateTime()
eDateTime.Min
fonte