क्या यह मानना सुरक्षित है कि एक ही संग्रह पर दो पुनरावृत्तियों ने ऑब्जेक्ट को उसी क्रम में वापस कर दिया है? जाहिर है, यह माना जाता है कि संग्रह अन्यथा नहीं बदला गया है।क्या फोरएच स्थिर द्वारा लौटाई गई वस्तुओं का क्रम है?
उत्तर
संक्षिप्त उत्तर - हाँ।
स्पष्ट रूप से, संग्रह में वस्तुओं का क्रम ठीक उसी तरह नहीं हो सकता है, जैसा संग्रह के प्रकार (उदाहरण के लिए, एक शब्दकोश) के आधार पर किया गया था।
लेकिन जब भी आप फोरैच लूप का उपयोग करके एकल, अनमोड संग्रह पर पुनरावृत्ति करते हैं तो आपको वही परिणाम मिलेंगे।
यह संग्रह प्रकार पर निर्भर करता है। अधिकांश संग्रहों के लिए, जवाब "हां" है।
हालांकि, इसकी गारंटी नहीं है। संग्रह प्रकार के दस्तावेज़ों को यह निर्दिष्ट करना चाहिए कि यह करता है या नहीं, लेकिन अधिकांश के रूप में, यह विवरण आम तौर पर देखा जाता है। हालांकि, यदि यह स्थिर नहीं है, तो दस्तावेज़ों का उल्लेख नहीं होने पर यह एक जबरदस्त निरीक्षण होगी।
मैं कहूंगा कि अधिकांश संग्रह के लिए यह मानना सुरक्षित है। यह संभावना के क्षेत्र से परे नहीं है कि एक निश्चित संग्रह में गैर-निर्धारक तरीके से लागूकर्ता को लागू किया जा सकता है, लेकिन शायद यह नहीं होने वाला है ...
निर्भर करता है कि आपको ऐसा कोड पसंद है जो "शायद" काम करने जा रहा है। व्यक्तिगत रूप से मैं उससे ज्यादा आत्मविश्वास होना पसंद करता हूं! – MarkJ
जबकि उत्तर सभी अंतर्निहित संग्रहों के लिए "हां" है और शायद वहां कोई भी सेन संग्रह कक्षा, दस्तावेज में IEnumerable
के लिए तैयार कोई बाधा नहीं है। इसलिए, कुछ भी हमें नहीं बताता है कि हर पुनरावृत्ति स्थिर होना चाहिए।
foreach (int i in new Shuffler(1, 2, 3, 4, 5, 6, 7, 8, 9))
Console.WriteLine(i);
यह अच्छी तरह से एक वर्ग है कि प्रत्येक यात्रा के लिए एक अलग आदेश पैदावार के रूप में लागू किया जा सकता:
मैं निम्नलिखित उपयोग के मामले कल्पना कर सकता।
तो - यदि आप अजीब सीमा रेखा के मामलों पर भी विचार करना चाहते हैं, तो जवाब "कोई" होना चाहिए।
उह, क्या जेम्स ने अपना जवाब बदल दिया? जब मैंने अपना लिखा, तो यह अभी भी मूल था। : -/ –
एक मामले का उत्कृष्ट उदाहरण जब आदेश सुसंगत नहीं होगा! –
आमतौर पर, तत्वों को उसी क्रम में वापस कर दिया जाएगा, बिल्कुल कोई गारंटी नहीं है। यह संग्रह वर्ग के आंतरिक कार्यान्वयन पर पूरी तरह से निर्भर है।
मैं एक संग्रह वर्ग के लिए एक केस देख सकता हूं जो विशेष रूप से यादृच्छिक क्रम में तत्वों को वापस करने के लिए डिज़ाइन किया गया है, उदाहरण के लिए।
संक्षेप में, जब तक कि आप संग्रह वर्ग की आंतरिक कार्यान्वयन पता है, आदेश के बारे में कुछ भी कल्पना नहीं है।
आप तब तक इसकी गारंटी नहीं दे सकते जब तक आप उस वर्ग के ठोस कार्यान्वयन को नहीं जानते जब आप इसे चालू कर रहे हैं।
संग्रह जो परिभाषित तत्व ऑर्डर (उदा। List<T>
) एक स्थिर क्रम में गणना करेंगे।
संग्रह के लिए जहां ऑब्जेक्ट की स्थिति में बदलाव नहीं होता है, यह अत्यधिक संभावना है कि तत्व उसी क्रम में वापस आ जाएंगे, उदा। Dictionary<K,V>
, हालांकि यह विनिर्देशन द्वारा गारंटी नहीं है।
इस उदाहरण के रूप में जहां यह मामला नहीं होगा, आप एक हैशटेबल आधारित शब्दकोश कार्यान्वयन की कल्पना कर सकते हैं जो तालिका को अतुल्यकालिक रूप से संकलित या आकार देता है।इस तरह के एक कार्यान्वयन एक स्थिर पुनरावृत्ति आदेश की गारंटी नहीं देगा।
पुन "अनमोडिफाइड" (एनएम का उत्तर) - ध्यान दें कि शब्दकोश जैसे कई जटिल कंटेनर ऑर्डर को सुरक्षित रखने की गारंटी नहीं देते हैं। कभी-कभी कोई आइटम जोड़ने से यह आखिरी दिखाई देगा (इंप्रेशन देकर कि ऑर्डर संरक्षित है), और कभी-कभी यह आंतरिक बाल्टी को फिर से व्यवस्थित करने का कारण बनता है, जिससे एक पूरी तरह से अलग ऑर्डर मिलता है।
सॉर्टेडलिस्ट <,> आदि जैसी चीजें स्पष्ट रूप से अपने स्वयं के नियम हैं।
लिंक इस उद्देश्य के लिए IOrderedEnumerable इंटरफेस को परिभाषित करता है।
- 1. रूबी: हैश.की और हैश.वल्यू विधियों द्वारा लौटाई गई कुंजियों/मानों का क्रम क्या है?
- 2. MySQL GLength विधि द्वारा लौटाई गई इकाई क्या है?
- 3. यूट्रान सेल पहचान getCid द्वारा लौटाई गई()
- 4. Django फ़िल्टर कॉल से लौटाई गई सूची का डिफ़ॉल्ट क्रम क्या है?
- 5. ऑब्जेक्ट/ऐपइंजिन: क्वेरी द्वारा लौटाई गई वस्तुओं की # गिनने का सबसे अच्छा तरीका?
- 6. क्या मुझे NSLocalizedString() द्वारा लौटाई गई तारों को सहेजना चाहिए?
- 7. एविएरी द्वारा लौटाई गई छवि का आकार मूल
- 8. फेसबुक के नए ग्राफ एपीआई द्वारा लौटाई गई वस्तुओं के लिए परमालिंक कैसे बनाया जाए?
- 9. किसी चयनित क्वेरी द्वारा लौटाई गई पंक्तियों की संख्या
- 10. NSJSONSerialization से लौटाई गई वस्तु
- 11. इकाई ढांचे द्वारा लौटाई गई आंतरिक सूची को कैसे क्रमबद्ध करें?
- 12. परिणाम सेट में लौटाई गई वस्तुओं की संख्या प्राप्त करने के लिए django टेम्पलेट टैग क्या है?
- 13. क्या मुझे असेंबली द्वारा लौटाई गई स्ट्रीम बंद करनी चाहिए। GetManifestResourceStream?
- 14. असेंबली द्वारा दिए गए प्रकारों का क्रम क्या है। GetTypes()?
- 15. एसक्यूएल में लौटाई गई पंक्तियों का आकलन कैसे करें?
- 16. MySQL द्वारा/क्रम धीमा समूह
- 17. एक स्क्लाइट स्टेटमेंट में लौटाई गई पंक्तियों की संख्या
- 18. साइनटूल त्रुटि: ISignedCode :: साइन लौटाई गई त्रुटि: 0x80092006
- 19. डाटामैटर में क्वेरी द्वारा लौटाई गई पंक्तियों की संख्या को कैसे गणना करें डेटामैपर
- 20. `svn blame Foo.cs` रिक्त द्वारा वापस लौटाई गई सभी पंक्तियां क्यों हैं?
- 21. मैं एक लूप में एक चयन द्वारा लौटाई गई पंक्तियों को कैसे अपडेट कर सकता हूं?
- 22. मैं इस बाएं जॉइन द्वारा लौटाई गई पंक्तियों की संख्या को कैसे सीमित कर सकता हूं?
- 23. क्या एक शब्दकोश में वस्तुओं के क्रम का ट्रैक रखने का कोई तरीका है?
- 24. मैं SQL क्वेरी द्वारा लौटाई गई तालिका के बाइट्स में आकार कैसे प्राप्त कर सकता हूं?
- 25. मैं सबक्वायरी द्वारा लौटाई गई पंक्तियों की संख्या कैसे गिन सकता हूं?
- 26. एशक्स फ़ाइल में, क्या मैं लौटाई गई फ़ाइल का फ़ाइल नाम सेट कर सकता हूं?
- 27. क्या जीसी द्वारा एकत्रित वस्तुओं को हुक करना संभव है?
- 28. कोडइग्निटर सक्रिय रिकॉर्ड - लौटाई गई पंक्तियों की संख्या प्राप्त करें
- 29. जेएक्स-डब्ल्यूएस द्वारा निर्यात की गई वस्तुओं के लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर क्यों आवश्यक है?
- 30. WebBrowser नियंत्रण द्वारा क्या UserAgent की सूचना दी गई है?
हम्मम्म ... लगता है कि हम दोनों ने एक ही काम किया है। एक वाक्य लिखा, इसे पोस्ट किया, और फिर इसे विस्तृत करने के लिए तुरंत संपादित किया। वास्तव में –
। मुझे लगता है कि आपका उत्तर मेरी तुलना में अधिक उपयुक्त है, उम्मीद है कि ओपी इसे निश्चित रूप से टैग करेगा। निश्चित रूप से लोकप्रिय वोट जीतने लगते हैं :) –
निश्चित रूप से इसे निश्चित उत्तर के रूप में टैग करने में समस्या यह है कि यह सटीक नहीं है! –