.NET তালিকা <T> কনক্যাট বনাম অ্যাডারেঞ্জ


উত্তর:


123

তাদের সম্পূর্ণ আলাদা শব্দার্থক শব্দ রয়েছে।

অ্যাডরেঞ্জ এটিকে অন্যান্য আইটেম যুক্ত করে তালিকাটি পরিবর্তন করে।

কনক্যাট তালিকাটি পরিবর্তন না করেই তালিকা এবং অন্যান্য আইটেমযুক্ত একটি নতুন ক্রম ফিরিয়ে দেয়।

আপনি যে শব্দার্থক চান তা বেছে নিন।


4
আয়নটি একটি টাইট লুপ, অ্যাড রেঞ্জটি ব্যবহার করা আরও ভাল হবে যাতে সমস্ত অভ্যন্তরীণ নতুনত্ব এবং জিসিকে পাউন্ডিংয়ের কারণে কর্মক্ষমতা হারাতে না পারে?
জনক

45
আসলে, ডেফার্ড সঞ্চালনের কারণে CONCAT ব্যবহার সম্ভবত দ্রুততর হবে, কারণ এটি এড়াতে বস্তুর বরাদ্দ - CONCAT কিছু কপি করবেন না, এটা ঠিক তালিকা মধ্যে লিঙ্ক তৈরি করে সুতরাং যখন enumerating এবং আপনি একটি শেষে এটা স্বচ্ছভাবে শুরু প্রদর্শন করা হয় পৌঁছানোর পরেরটি!
গ্রেগ বিচ

36

বড় পার্থক্য হ'ল অ্যাডরেঞ্জ সেই তালিকাটিকে পরিবর্তিত করে যার বিরুদ্ধে এটি বলা হয় যেখানে কনক্যাট একটি নতুন তালিকা তৈরি করে। তাই তাদের বিভিন্ন ব্যবহার রয়েছে have

এছাড়াও কনক্যাট একটি এক্সটেনশন পদ্ধতি যা কোনও আইইনিউরেবলের জন্য প্রযোজ্য এবং একটি নতুন তালিকার ফলস্বরূপ আপনার .ToList () প্রয়োজন এমন একটি IEnumerable ফিরিয়ে দেয়।

আপনি যদি বিদ্যমান তালিকার বিষয়বস্তু প্রসারিত করতে চান তবে অ্যাডরেঞ্জ ব্যবহার করুন।

আপনি যদি দুটি আইএনমেবলের উত্স থেকে একটি নতুন তালিকা তৈরি করে থাকেন তবে টোকলিস্টের সাথে কনক্যাট ব্যবহার করুন। এটিতে এমন গুণ রয়েছে যা এটি উত্সগুলির মধ্যে কোনও রূপান্তর করে না।

আপনার যদি কেবল দুটি তালিকার বিষয়বস্তুগুলি গণনা করার প্রয়োজন হয় (বা অন্য কোনও আইনিউবারেবল) তবে প্রতিবার কেবল কনক্যাট ব্যবহার করুন, ইউনিফাইড তালিকাটি ধারণ করতে আসলে নতুন মেমরি বরাদ্দ না করার সুবিধা রয়েছে।


4
+1, প্রকৃতপক্ষে, আপনি যদি 'টোলিস্ট' করতে ভুলে যান তবে কনকট চুপচাপ কিছুই করেন না
স্মার্কম্যান

7

আমি এই আকর্ষণীয় নিবন্ধটি এই 2 কাঠামোর মধ্যে পার্থক্য এবং তাদের পারফরম্যান্সের সাথে তুলনা করার কথা বলেছি ...

মূল ধারণাটি হ'ল অ্যাড্রেঞ্জ খুব দ্রুততর হয় যখন এটি প্রায় বড় আকারের সংগ্রহ।

এখানে লিঙ্কটি দেওয়া আছে

আশাকরি এটা সাহায্য করবে,


4
আমি একটি পরীক্ষার তুলনা করেছি Concatএবং AddRangeসাথে List<KeyValuePair<string, string>>1000 টি উপাদান দিয়ে একটি 100 বার সংক্ষিপ্ত / যুক্ত করেছি এবং AddRangeঅত্যন্ত দ্রুত ছিল। ফলাফল এই ছিল: AddRange13 MS, Concat().ToList()16,000 MS, এবং Concatএকটি অন IEnumerableশুধুমাত্র করছেন ToListশেষে: 2,700 MS।
অ্যান্ড্রু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.