ध्यान दें कि कुछ का निर्माण करने वालों की सूची की गणना करने के लिए जा रहा है List<T>
; यह केवल एक बात है कि आप इसे स्वयं करते हैं या इसे किसी अन्य (ढांचे/उपयोगिता) विधि पर छोड़ दें।
यदि यह एक बंद है, समाधान है कि आप (रूपांतरण करने के लिए एक "यथा-स्थान" foreach
पाश का प्रयोग करके) से बचने की इच्छा एक पूरी तरह से उचित विकल्प है। यदि आप इसे अक्सर ऐसा करते हैं, तो आप इसे सामान्य उपयोगिता विधि में निकाल सकते हैं, जैसे कि सीडीओवी के जवाब में।
यदि आपका प्रतिबंध केवल यह है कि आप चाहिए लक्ष्य .NET 2.0 (लेकिन सी # का उपयोग कर सकते 3), LINQBridge, जो .NET 2.0 के लिए वस्तुओं के लिए LINQ की एक reimplementation है पर विचार करें। यह आपको बिना बदलाव के प्रदान किए गए Cast
नमूने का उपयोग करने देगा। यह सी # 2 पर भी काम करेगा, लेकिन आपको विस्तार-विधि वाक्यविन्यास, बेहतर प्रकार-अनुमान आदि का लाभ नहीं मिलेगा
यदि आपको प्रदर्शन की परवाह नहीं है, और न ही आप जाना चाहते हैं एक उपयोगिता विधि लिखने की मुसीबत, आप मदद करने के लिए एक मध्यस्थ के सरणी कि List<T>
साथ अच्छी तरह से खेलता है बनाने के द्वारा में निर्मित ArrayList.ToArray
विधि इस्तेमाल कर सकते हैं (यह सब है कि एक foreach की तुलना में कम नहीं है):
ArrayList arrayList = ...
// Create intermediary array
BookingData[] array = (BookingData[]) arrayList.ToArray(typeof(BookingData));
// Create the List<T> using the constructor that takes an IEnumerable<T>
List<BookingData> list = new List<BookingData>(array);
अंत में, मैं सुझाव दूंगा कि अप्रचलित गैर-जेनेरिक संग्रह-वर्गों का उपयोग करके पूरी तरह से छोड़ना संभव है।
foreach (Object item in list1)
{
list2.Add((BookingData)item);
}
सी # में आपको वास्तव में 'ऐरेलिस्ट' को 'सूची' में डालने की ज़रूरत है? – khachik
@khachik: 'ArrayList' प्रकार 'ऑब्जेक्ट' और 'सूची' प्रकार का एक सामान्य प्रकार है। – Bobby
@khachik, वे सी # में ठोस वर्ग दोनों हैं। –