SORU
30 Ocak 2010, CUMARTESİ


C# 4.0: varsayılan değeri isteğe bağlı bir parametre olarak bir zaman aralığı kullanabilir miyim?

Bunların her ikisi de bir hata, bir derleme zamanı sabiti olması gerektiğini söyleyerek oluşturun

void Foo(TimeSpan span = TimeSpan.FromSeconds(2.0))
void Foo(TimeSpan span = new TimeSpan(2000))

Her şeyden önce, birileri bu değerleri derleme zamanında tespit edilemez neden açıklayabilir mi? Ve bir isteğe bağlı zaman aralığı bir nesne için varsayılan bir değer belirtmek için mi?

CEVAP
30 Ocak 2010, CUMARTESİ


İmzanızı değiştirerek bu çok kolay bir çözüm bulabilirsiniz.

void Foo(TimeSpan? span = null) {

   if (span == null) { span = TimeSpan.FromSeconds(2); }

   ...

}

Ayrıntılı - sizin örnekte bu ifadeler derleme zamanı sabitleri derleme zamanında derleyici sadece zaman aralığı çalıştırabilirsiniz.çünkü değildir nedeni.FromSeconds(2.0) ve derlenmiş kodu içine sonucun bayt sopa.

Örnek olarak, eğer DateTime kullanmayı denesen düşünün.Şimdi yerine. DateTime değer.Değişiklikleri şimdi yürütülen var her zaman. Ya da o zaman dilimi sanırım.FromSeconds dikkate yerçekimi aldı. Saçma bir örnek ama derleme zamanı sabitleri olan zaman aralığı öğrendik diye özel durumlarda yapma kuralları.FromSeconds belirleyici.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013