पर्ल ऐसा करने की क्षमता है:कैसे एक बयान में चरों की सूची के लिए आवंटित करने के लिए
my ($a,$b,$c,$d) = foo();
जहां foo
रिटर्न 4 चर, के रूप में यह एक समय में एक बताए करने का विरोध किया। क्या सी # में कुछ समान है?
पर्ल ऐसा करने की क्षमता है:कैसे एक बयान में चरों की सूची के लिए आवंटित करने के लिए
my ($a,$b,$c,$d) = foo();
जहां foo
रिटर्न 4 चर, के रूप में यह एक समय में एक बताए करने का विरोध किया। क्या सी # में कुछ समान है?
नहीं, मूल रूप से। विकल्प:
object[] values = foo();
int a = (int)values[0];
string b = (string)values[1];
// etc
या:
var result = foo();
// then access result.Something, result.SomethingElse etc
या:
int a;
string b;
float c; // using different types to show worst case
var d = foo(out a, out b, out c); // THIS WILL CONFUSE PEOPLE and is not a
// recommendation
@lazyberezovsky आखिरकार इन सभी चीजों में एक फ़ंक्शन से आउटबाउंड एकाधिक मान व्यक्त करने और कॉलर पर स्थानीय लोगों को असाइन करने के तरीके हैं; * के लिए * तंत्र * (सूचियां, आदि) कार्यान्वयन विवरण –
बहुत धन्यवाद है! – user2521358
यदि आप खराब विकल्प की गणना कर रहे हैं, तो मुझे लगता है कि आप 'टुपल
कार्यों आप लौटना चाहिए या तो 1 वस्तु या void
लिए। लेकिन आप इस समस्या से कई तरीकों से संपर्क कर सकते हैं।
struct
या एक class
कि a,b,c,d
होते हैं और लौटने कि आपके समारोह के रूप में उदाहरण के लिए के रूप में एक डेटा संरचना बना सकते हैं data foo()
डेटा में ए, बी, सी, डीout
कीवर्ड का उपयोग कर सकते हैं उदा। foo (बाहर, बाहर बी, बाहर सी, बाहर डी), लेकिन आपके परिवर्तनीय इनपुट शुरू करने की आवश्यकता होगी। यहां अधिक जानकारी। http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspxref
का भी उपयोग कर सकते हैं जो कि समान है। देखें http://msdn.microsoft.com/en-US/library/14akc2c7(v=vs.80).aspxarrray
या एक list
किसी अन्य सदस्य के रूप में के रूप में एक संग्रह के रूप में लौट सकते हैं ने कहा हैभी निर्भर करता है याद जिस प्रकार आप स्ट्रैट बनाम ऑब्जेक्ट्स पास कर रहे हैं उस प्रकार पर Value
या Reference
के रूप में पारित किया जा सकता है। http://msdn.microsoft.com/en-us/library/0f66670z(v=vs.71).aspx
विज्ञापन 4. ऐरे, सूची या (अधिमानतः) एक 'आईनेमरेबल' –
Tuple
इसके लिए एक उपयोगी निर्माण हो सकता है।
public Tuple<int, string, double> Foo() { ... }
तो फिर तुम कर सकते हैं:
var result = Foo();
int a = result.Item1;
string b = result.Item2;
double c = result.Item3;
यह सी # पर कार्यात्मक प्रोग्रामिंग शैलियों के बढ़ते प्रभाव की विरासत है: टपल कई कार्यात्मक भाषाओं में एक मौलिक निर्माण है, और बहुत में सहायता करता है उनके स्थैतिक टाइपिंग।
इसके लिए कक्षा क्यों नहीं बनाते? –
AFAIK संख्या, लेकिन @ 491243 के रूप में आप कक्षा – wudzik
का उपयोग कर सकते हैं बस दिलचस्प - जब यह सुविधा उपयोगी हो सकती है? –