2009-07-24 10 views
20

संभव डुप्लिकेट:
Equivalence of “With…End With” in c#?वीबी में बयान के साथ सी # समतुल्य क्या है?

वीबी कि मैं वास्तव में की तरह ... With बयान की एक विशेषता थी। क्या सी # के बराबर इसके बराबर है? मुझे पता है कि आप नामस्थान टाइप करने के लिए using का उपयोग कर सकते हैं, लेकिन यह केवल उस तक ही सीमित है। वीबी में आप ऐसा कर सकता है:

With Stuff.Elements.Foo 
    .Name = "Bob Dylan" 
    .Age = 68 
    .Location = "On Tour" 
    .IsCool = True 
End With 

सी # में एक ही कोड होगा:

Stuff.Elements.Foo.Name = "Bob Dylan"; 
Stuff.Elements.Foo.Age = 68; 
Stuff.Elements.Foo.Location = "On Tour"; 
Stuff.Elements.Foo.IsCool = true; 
+0

डुप्ले http://stackoverflow.com/questions/1063429/equivalence-of-with-end-with-in-c – Jimmy

उत्तर

36

नहीं वास्तव में, आप एक चर आवंटित करने के लिए किया है। तो

var bar = Stuff.Elements.Foo; 
    bar.Name = "Bob Dylan"; 
    bar.Age = 68; 
    bar.Location = "On Tour"; 
    bar.IsCool = True; 

या सी # 3.0 में:

Stuff.Elements.Foo foo = new Stuff.Elements.Foo() {Name = "Bob Dylan", Age = 68, Location = "On Tour", IsCool = true} 
+9

आप एक प्रकार के रूप में 'Stuff.Elements.Foo' का इलाज कर रहे हैं। क्या यह वीबी कोड में उपयोग किया जा रहा है, या यह वास्तव में एक नेस्टेड चर का संदर्भ है? तकनीक पूरी तरह से मान्य है लेकिन मुझे लगता है कि आपका कोड बिल्कुल सही नहीं है। – quark

+3

मैंने एक [ब्लॉग] लिखा है (http://blog.baltrinic.com/software-development/dotnet/c-equivalent-for-visual-basic-with-statement) कुछ समय पहले सी # में कथन के साथ अनुकरण कैसे करें विस्तार विधियों और लैम्ब्डा अभिव्यक्तियों का उपयोग करना। –

+1

@ केनेथ: यह बहुत चालाक है, हालांकि यह तर्क दिया जा सकता है कि 'ऑब्जेक्ट.Child.Grandchild.GreatGrandchild.Property1 = 1;' डेमेटर के कानून का उल्लंघन करता है। –

4

सी # 3.0 में निकटतम बात यह है कि आप गुण प्रारंभ करने में एक निर्माता का उपयोग कर सकते है केवल कन्स्ट्रक्टर कॉल में प्रयोग योग्य), सबसे अच्छा आप प्राप्त कर सकते हैं:

var it = Stuff.Elements.Foo; 
it.Name = "Bob Dylan"; 
it.Age = 68; 
... 
+2

आप एक प्रकार के रूप में 'Stuff.Elements.Foo' का इलाज कर रहे हैं। क्या यह वीबी कोड में उपयोग किया जा रहा है, या यह वास्तव में एक नेस्टेड चर का संदर्भ है? तकनीक पूरी तरह से मान्य है लेकिन मुझे लगता है कि आपका कोड बिल्कुल सही नहीं है। (मैंने क्वार्क की टिप्पणी यहां कॉपी की है क्योंकि यह इस उत्तर पर भी लागू होती है) – MarkJ

7
एक तरफ वस्तु initializers से

(:

var bar = Stuff.Elements.Foo 
    { 
     Name = "Bob Dylan", 
     Age = 68, 
     Location = "On Tour", 
     IsCool = True 
    }; 
संबंधित मुद्दे