EDIT 1 में डिफ़ॉल्ट विधि पैरामीटर संकलित-समय स्थिरांक क्यों होना चाहिए 1: मुझे पता है कि टेलीस्कोपिंग जैसे विकल्प हैं, यह एक विशुद्ध रूप से शैक्षिक प्रश्न था।सी #
मुझे पता है कि यह सच है, लेकिन यह क्यों होना चाहिए?
public class Foo{
private int bar;
public void SetBar(int baz = ThatOtherClass.GetBaz(3)){
this.bar = baz;
}
}
संकलक कुछ इस तरह करने के लिए विधि को बदल सकता है:: यह कुछ इस तरह से की तरह लगता है
public void SetBar(int baz){
//if baz wasn't passed:
baz = ThatOtherClass.GetBaz(3);
this.bar = baz;
}
क्यों नहीं होगा कि काम, या होगा यह, और यह सिर्फ एक डिजाइन निर्णय होता है ?
क्योंकि रनटाइम मानों और संकलन-समय मानों के बीच कोई अंतर हो सकता है। क्या होगा यदि कोडर वहां संकलित-समय मान "हार्डकोडेड" चाहता था, लेकिन GetBaz() फिर रनटाइम पर कुछ अलग करता है और प्रोग्राम को फटकार से बाहर फेंक देता है? –
यदि आप जानना चाहते हैं कि क्यों सी # भाषा टीम ने एक सुविधा लागू नहीं की है तो उनसे यादृच्छिक डेवलपर्स की बजाय उनसे पूछें जिनके पास भाषा के निर्माण से कोई लेना देना नहीं था। हम नहीं जानते कि उन्होंने इस सुविधा को लागू नहीं करने का फैसला क्यों किया। – Servy
आपके पास हमेशा –