Ayrıca, isteğe bağlı yöntem parametreleri için çalışma zamanı değerlerini kullanmanın bir yolu var mı?Neden C# 4.0'da isteğe bağlı parametreler derleme zamanı sabitleri gerektirir?
cevap
İsteğe bağlı parametreler, bir özniteliğin değerleri olarak yazıldığından sabit olması gerekir. Bu nedenle, bir özellik değerinin sahip olduğu tüm kısıtlamaları devralırlar.
Çalışma zamanı değerini doğrudan kodlamanın bir yolu yoktur. Ancak yakın
public void MyApi(SomeType type = null) {
type = type ?? new SomeType();
...
}
Teşekkürler, bu temiz bir numara gibi görünüyor. Merak etme, neden öznitelikleri kullanarak uygulandığını biliyor musunuz? Şimdiden çerçevede olanı yeniden kullanmayı mı düşünüyorsun? –
@Joan IIRC bu özelliklerle yapılır, çünkü diğer diller (VB.Net) bunu yapar ve bu nedenle onlarla uyumluluk sağlar. – JaredPar
@Joan: Nitelikler kullanarak, bu özelliği olmayan dilleri bozmazlar. Unutmayın, .NET'teki her şey, dil tarafsız olması gereken bir formda derlenir ... Özellikler, diğer .NET dillerinde değişiklik yapılmasını gerektirmeden, belirli bir dilde isteğe bağlı parametreleri işlemenin temiz bir yoludur. –
İsteğe bağlı parametreler derleme içinde derlenir ve bu şekilde (const
olarak adlandırılan her şey gibi) derleme zamanı sabiti olması gerekir.
Ve hayır, yürütme zamanı değerlerini isteğe bağlı parametreler olarak kullanamazsınız.
Teşekkürler, ancak bir çalışma zamanı başvurusu için bir başvuru ile derleme yapamıyorum? Yani şöyle bir şey söyle: Bu, aynı sınıftaki vb. –
İsteğe bağlı parametreler derleme zamanında belirlenir ve çok az parametrelerle bir yöntem çağırırsanız yöntem haline ikame Aşağıdakiler desenle alabilirsiniz. Yöntem IL'deki parametreye bir özellik ekleyerek ele alınırlar. Bu nedenle, derleme zamanında tam olarak çözülmeleri gerekir (her ikisi de bir özellik olduklarından, aynı zamanda kullanıldığında). İsteğe bağlı yöntem parametreleri için çalışma zamanı değerlerini kullanmanın bir yolu yoktur.
- 1. Derleme zamanı dizi sabitleri
- 2. C# bu parametreler isteğe bağlı
- 3. C# Dize Sabitleri İçin Derleme Zamanı Birleştirme
- 4. Raylar, isteğe bağlı parametreler
- 5. isteğe bağlı parametreler proc?
- 6. Linq isteğe bağlı parametreler
- 7. Enterprise Architect: C# İsteğe bağlı parametreler?
- 8. Neden ObjectDataSource bir işlevin isteğe bağlı parametresini gerektirir?
- 9. g ++ derleme zamanı dizi boyutuna bağlı mı?
- 10. Raylar İsteğe bağlı parametreler ile arayın?
- 11. Yöntem Geçersiz Kılma ve İsteğe Bağlı Parametreler
- 12. Powershell olmayan pozisyonel, isteğe bağlı parametreler
- 13. İsteğe Bağlı Parametreler C# - Kullanıcı tanımlı Sınıfın sıfırlanması
- 14. yazdırma derleme zamanı C++
- 15. C# - Enum sabitleri nelerdir?
- 16. C++ hexfloat derleme zamanı ayrıştırma
- 17. Neden derleme zamanı hatası gösteriyor?
- 18. C++ dilinde derleme zamanı iddiaları?
- 19. Concatenate sabitleri Objective-C ios
- 20. Dart'ta adlandırılmış ve isteğe bağlı parametreler arasındaki fark nedir?
- 21. VB işlevinde isteğe bağlı parametreler/varsayılan değer parametreleri nasıl eklenir?
- 22. wsdl modundaki PHP SoapClient sınıfı ile isteğe bağlı parametreler
- 23. Gradle İsteğe Bağlı Bağımlılık İçermiyor
- 24. Neden uygulanamaz isteğe bağlı protokol yöntemleri, bu yöntem obj-c'de çağrıldığında çalışma zamanı hatalarına neden olur?
- 25. Ninj. İsteğe Bağlı Enjeksiyon
- 26. subprocess.Popen isteğe bağlı bağımsız değişkenler
- 27. Neden sed, isteğe bağlı bir grup yazdırmıyor?
- 28. avro şemada isteğe bağlı dizi
- 29. Derleme Zamanı İşlev Yürütme
- 30. Derleme zamanı "strlen()" etkili mi?
olası kopyası [String.Empty'yi C# 'daki isteğe bağlı bir parametre için varsayılan değer olarak kullanamazsınız - o zaman ne var?] (Http://stackoverflow.com/questions/2701314/cannot-use-string-empty- bir-varsayılan olarak-için-isteğe bağlı-parametre-in-c-keskin-değeri olarak) – nawfal