2009-02-03 14 views
5

कुछ महीने पहले मैंने एक तकनीक के बारे में पढ़ा था ताकि अगर आप वहां पर रखे गए पैरामीटर स्थानीय चर से मेल खाते हैं तो आप उन्हें सेट करने के लिए कुछ छोटे हाथ वाक्यविन्यास का उपयोग कर सकते हैं। इससे बचने के लिए:सी # ऑब्जेक्ट कन्स्ट्रक्टर - शॉर्टेंड प्रॉपर्टी सिंटैक्स

public string Method(p1, p2, p3) 
{ 
    this.p1 = p1; 
    this.p2 = p2; 
    this.p3 = p3; 
} 

कोई विचार?

उत्तर

25

आप सी # 3.0 में नए ऑब्जेक्ट प्रारंभकर्ता वाक्यविन्यास के बारे में सोच रहे हैं। यह इस तरह दिखता है:

var foo = new Foo { Bar = 1, Fizz = "hello" }; 

ताकि हमें फू का एक नया उदाहरण दे रही है, "बार" संपत्ति 1 के लिए शुरू और "सीटी" संपत्ति को "हैलो" के साथ।

इस वाक्यविन्यास के साथ चाल यह है कि यदि आप "=" छोड़ते हैं और पहचानकर्ता की आपूर्ति करते हैं, तो यह मान लेगा कि आप एक ही नाम की संपत्ति को असाइन कर रहे हैं। तो, उदाहरण के लिए, अगर मैं पहले से ही एक फू उदाहरण था, मैं यह कर सकता है:

var foo2 = new Foo { foo1.Bar, foo1.Fizz }; 

यह है, तो, बहुत अपने उदाहरण के करीब हो रही है। अपनी कक्षा P1, P2 और पी 3 गुण है, और आप एक ही नाम के साथ चर है, तो आप लिख सकते हैं:

var foo = new Foo { p1, p2, p3 }; 

ध्यान दें कि यह केवल उदाहरणों के निर्माण के लिए है - अपने उदाहरण से पता चलता है के रूप में तरीकों में पैरामीटर प्रदान करने के लिए नहीं - तो हो सकता है कि आप जो भी सोच रहे हों वह न हो।

+0

आप सही मैट हो सकते हैं हालांकि मैं निश्चित नहीं हूं। haha। वास्तव में इन चीजों को सहेजने की ज़रूरत है जब मैं उन्हें अगली बार ढूंढूं। खुश होती है। – Schotime

2

आप सी # में "ऑब्जेक्ट प्रारंभकर्ता" के बारे में सोच रहे हैं, जहां आप पैरामीटरयुक्त कन्स्ट्रक्टर का उपयोग करने के बजाय कक्षा के गुणों को सेट करके ऑब्जेक्ट बना सकते हैं।

मुझे यकीन नहीं है कि इसका उपयोग आपके उदाहरण में किया जा सकता है क्योंकि आपका "यह" पहले से ही बनाया जा चुका है।

+0

क्या जावा में कुछ समान है? – Verhogen

+1

जहां तक ​​मुझे पता नहीं है। –

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