2009-01-30 18 views
23

क्या ऑब्जेक्ट प्रारंभकर्ता सिंटैक्स का उपयोग करके मैं गुण सेट करता हूं, वही क्रम में निष्पादित किया जाता है?ऑब्जेक्ट इनलाइज़रइज़र का उपयोग कर संचालन का क्रम सिंटेक्स

var s = new Person { FirstName = "Micah", 
        LastName = "Martin", 
        IsLoaded = true 
        } 

प्रत्येक प्रॉपर्टी उसी क्रम में सेट हो जाएगा:

उदाहरण के लिए अगर मैं यह कर?

उत्तर

36

हां।

बाधित होने के लिए क्षमा चाहते हैं (मुझे वास्तव में हर बार कुछ काम करना पड़ता है)। कल्पना नहीं स्पष्ट करता है यह कहना है, लेकिन यह खंड 7.6.10.2 में IMO यह बहुत स्पष्ट करता है:


एक ऑब्जेक्ट प्रारंभकर्ता सदस्य initializers, {और} टोकन से घिरा और अलग से एक दृश्य के होते हैं अल्पविराम से

निम्नलिखित वर्ग दो निर्देशांक के साथ एक बिंदु का प्रतिनिधित्व (शब्द "अनुक्रम" यहाँ, बजाय "सेट" मैं व्यक्तिगत रूप से लगता है कि, महत्वपूर्ण है के रूप में एक दृश्य का आदेश दिया है ध्यान दें।।):

public class Point 
{ 
    int x, y; 
    public int X { get { return x; } set { x = value; } } 
    public int Y { get { return y; } set { y = value; } } 
} 

प्वाइंट का एक उदाहरण बनाया है और प्रारंभ किया जा सकता है इस प्रकार है:

Point a = new Point { X = 0, Y = 1 }; 

जो एक ही प्रभाव एक है एस

Point __a = new Point(); 
__a.X = 0; 
__a.Y = 1; 
Point a = __a; 

जहां __a अन्यथा अदृश्य और पहुंच योग्य अस्थायी चर है।


संपादित करें: मैं मैड्स Torgersen, जो मूल रूप से कहा है कि जो कुछ भी अब किया जा सकता है आदेश सुरक्षित करेगा से एक प्रतिक्रिया मिली है। भविष्य में कुछ विषमताएं हो सकती हैं जहां ऑर्डर अजीब मामलों में संरक्षित नहीं है जहां आप संपत्ति/फ़ील्ड सेट करने से अन्य कुछ कर रहे हैं, लेकिन यह इस बात पर निर्भर करेगा कि भाषा कहां जाती है।

यह इंगित करने लायक है कि वास्तव में यहां बहुत सारे कदम चल रहे हैं - तर्कों के मूल्यांकन (यानी आरएचएस बिट्स) के निष्पादन के आदेश और असाइनमेंट के निष्पादन के आदेश का आदेश है। उदाहरण के लिए, यदि आपके पास:

new Foo 
{ 
    A = X, 
    B = Y 
} 

सभी निम्नलिखित आदेश संभव हो रहे हैं, जबकि अभी भी (ए और बी) वास्तविक संपत्ति निष्पादन की व्यवस्था बनाए रखने:,

  • मूल्यांकन एक्स एक को निर्दिष्ट करते हैं, का मूल्यांकन वाई,, बी को
  • मूल्यांकन पहला, दूसरा मूल्यांकन आवंटित एक को असाइन, बी को
  • मूल्यांकन वाई, मूल्यांकन एक्स, एक को असाइन असाइन करें, बी को आवंटित

मेरा मानना ​​है कि पहला विकल्प वास्तव में लिया गया है, लेकिन यह केवल यह दिखाने के लिए था कि आंखों की तुलना में इसके लिए और भी कुछ है।

मैं भी बहुत वास्तव में कोड जो इस पर निर्भर करता है लेखन से सावधान रहना होगा ...

+1

Dude! आप चक नॉरिस से बेहतर हैं! – Micah

+3

आप संदर्भ हैं। – Micah

+1

मेरी सबसे बड़ी चिंता यह है कि असाइनमेंट उन क्रम में होते हैं जिन्हें मैं सूचीबद्ध करता हूं। मैं सही-पक्ष मूल्यांकन आदेश के बारे में चिंतित नहीं हूं जितना मैं वास्तविक बाएं-पक्ष असाइनमेंट ऑर्डर के बारे में हूं। – Micah

संबंधित मुद्दे