আইটিলিস্ট বনাম সত্তা সম্পর্কিত সংগ্রহের জন্য আইনিংরেবল


146

আমার ডোমেইনে জিনিসগুলির তালিকাসমূহের সত্ত্বা থাকলে, সেগুলিকে আইএললিস্ট বা আইনিউমারেবল হিসাবে প্রকাশ করা উচিত? উদাহরণস্বরূপ অর্ডারলাইনগুলির একটি গুচ্ছ রয়েছে।


দুটোই বাস্তবায়ন করা কি বুদ্ধিমানের কাজ হবে?
পেড্রোসি 88

4
এটা হবে না। আইএনলিস্টের আইএনলিস্টের উত্তরাধিকারসূত্রে।
অজানা 1987

উত্তর:


183

IEnumerable<T> এমন কিছু আইটেমের প্রতিনিধিত্ব করে যা আপনি পুনরাবৃত্তি করতে পারেন (উদাহরণস্বরূপ, অগ্রণী ব্যবহার করে), যদিও whereas IList<T> এমন একটি সংগ্রহ যা আপনি যোগ করতে বা এখান থেকে সরিয়ে নিতে পারেন।

সাধারণত আপনি এতে অর্ডারলাইন যুক্ত বা অপসারণ করে কোনও অর্ডার পরিবর্তন করতে সক্ষম হতে চান, আপনি সম্ভবত অর্ডার.লাইনস একটি হতে চান IList<OrderLine>

এটি বলার পরে, আপনার কিছু ফ্রেমওয়ার্ক ডিজাইনের সিদ্ধান্ত নেওয়া উচিত। উদাহরণস্বরূপ, অর্ডারলাইনের একই উদাহরণটি দুটি পৃথক অর্ডারে যুক্ত করা উচিত? সম্ভবত না. যাতে আপনি অর্ডারলাইনটিকে অর্ডারে যুক্ত করা উচিত কিনা তা যাচাই করতে সক্ষম হতে চাইলে আপনি লাইনের সম্পত্তিটিকে কেবলমাত্র একটি হিসাবে উপস্থাপন করতে IEnumerable<OrderLine>এবং অ্যাড (অর্ডারলাইন) সরবরাহ করতে এবং (অর্ডারলাইন) পদ্ধতিগুলি পরিচালনা করতে পারেন যা পরিচালনা করতে পারে যে বৈধতা।


5
এছাড়াও আপনি একটি ব্যবহার করতে পারেন IReadOnlyListবা IReadOnlyCollectionআপনি তালিকার রূপায়িত কিন্তু আপনি যোগ করতে অথবা তা থেকে অপসারণ করতে চান না প্রয়োজন হলে।
জুলাইগলন

তারপরে IReadOnlyListকোনও অর্থ হয় না।
আজ

24

বেশিরভাগ সময় আমি আইলিস্টের সাথে আইনিউবারেবলের সাথে যাওয়ার শেষ করি কারণ আইনিম্যারেবলের গণনা পদ্ধতি নেই এবং আপনি কোনও সূচকের মাধ্যমে সংগ্রহটি অ্যাক্সেস করতে পারবেন না (যদিও আপনি লিনকিউ ব্যবহার করছেন তবে আপনি এক্সটেনশন পদ্ধতির সাহায্যে এটি পেতে পারেন)।


1
আমি বিশ্বাস করি যে আপনি গণনা পদ্ধতি এবং এর মতো অ্যাক্সেসের প্রয়োজন হলে আপনি সর্বদা আইইনিউমারেবলের সাথে একটি আইলিস্ট বাস্তবায়ন ইনস্ট্যান্ট করতে পারেন উদাহরণস্বরূপ: আইনিম্যারেবল <স্ট্রিং> এনামেবল = <সুম- আইওনামেবল> লিস্ট <স্ট্রিং> মাইলিস্ট = নতুন লিস্ট <স্ট্রিং> (গণনাযোগ্য) ); যাইহোক, আপনি কীভাবে আপনার সংগ্রহটি প্রকাশ করেন তা বিবেচনার উপর নির্ভর করে আপনি সংগ্রহের সম্পত্তিটি অপরিবর্তনীয় হতে চান কিনা (উদাহরণস্বরূপ আপনি সংগ্রহটি সংশোধন করতে দেবেন না) বা না (আইলিস্টটি পড়ুন)
সুধাংশু মিশ্র

11
অনুমিত <ট>। অ্যাকাউন্ট () অন্তর্নিহিত প্রকারটি একটি আইকোলিকেশন <T> যা একটি গণনা সম্পত্তি প্রয়োগ করে তা পরীক্ষা করে দেখুন।
andleer

"আপনি কোনও সূচকের মাধ্যমে সংগ্রহটি অ্যাক্সেস করতে পারবেন না" - ElementAtপদ্ধতির কী হবে?
আইভাম্যাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.