.NET এ অর্ডারড অভিধানের কোনও জেনেরিক প্রয়োগ নেই কেন?


26

মাইক্রোসফ্ট অর্ডারডোরিয়ানের জেনেরিক প্রয়োগ সরবরাহ করে না কেন?

আমি কয়েকটি কাস্টম বাস্তবায়ন দেখেছি, যার মধ্যে রয়েছে: http://www.codeproject.com/KB/recips/ জেনেরিকঅর্ডারড অভিধান.অ্যাসপেক্স

তবে মাইক্রোসফ্ট কেন এটি বেস। নেট লাইব্রেরিতে অন্তর্ভুক্ত করেনি? নিশ্চয়ই তাদের জেনেরিক না তৈরি করার কারণ ছিল .... তবে এটি কী?

এই বার্তাটি পোস্ট করার আগে আমি দেখেছি: /programming/2629027/no-generic-implementation-of-orderedd शब्दकोष

তবে এটি নিশ্চিত করে যে এটির অস্তিত্ব নেই। না কেন এটা কোন অস্তিত্ব নেই।

ধন্যবাদ



2
আমি যদি সর্ডার্ডডিক্ট ডক্সকে ভুল না বুঝি তবে তা আমি চাই না। আমি কোন বাছাই করা চাই না। আমি কেবল একটি অ্যারে চাই যা আমি কী দ্বারাও অ্যাক্সেস করতে পারি। যাইহোক, আমি সত্যিই ভাবছি কেন এমএস এড়িয়ে গেল। (সূক্ষ্ম ইস্যু ইত্যাদি)
নোট 1

অর্ডার করা অভিধানের জন্য একটি সাধারণ ব্যবহারের কেস? আমি আমার মাথার উপরের অংশের কথা ভাবতে চাইছি।
কারসন 63000

1
@ কারসন আপনার কাছে যে কোনও সময় ডেটা আইটেমগুলির অ্যারে রয়েছে যাতে আপনাকে দ্রুত এলোমেলো অ্যাক্সেসের প্রয়োজনও রয়েছে। কেবল একটি ডিক্টে সঞ্চয় করার জন্য অর্ডারিংয়ের তথ্যটি হারাতে থাকে এবং অ্যারে ব্যবহারের জন্য আপনার নিজের সূচি বজায় রাখা প্রয়োজন।
ননোট 1

2
এরিক লিপার্টকে আপনার প্রশ্নের উত্তর পড়তে এবং উত্তর দিতে বলুন। তিনি এই ধরণের প্রশ্নে সহায়তা করার জন্য খুব সম্মত হন। আমি মনে করি আপনি তাঁর ব্লগের মাধ্যমে তার সাথে যোগাযোগ করতে পারেন: ব্লগস.এমএসএনএন
বি

উত্তর:


17

সংক্ষেপে সি # 4.0 এ আমি এটি পড়েছি:

  1. আন OrderedDictionaryএকটি HashTableএবং এর সংমিশ্রণArrayList
  2. জেনেরিক নেই ArrayList
  3. "ননজেনেরিক ArrayListশ্রেণিটি মূলত ফ্রেমওয়ার্ক 1.x এর সাথে পশ্চাদপটে সামঞ্জস্যের জন্য ব্যবহৃত হয় ..."
  4. "একটি ArrayListকার্যকরীভাবে একই সাথে পরিচিত List<object>"
  5. "ননজেনেরিকের ArrayListচেয়ে প্রতিবিম্বটি আরও সহজ List<object>"

উপসংহার?

জেনেরিক নয় OrderedDictionaryকারণ এর অন্তর্নিহিত নির্মাণটি হ'ল একটি (আনুষ্ঠানিকভাবে) অবহেলা শ্রেণি যার কোনও জেনেরিক সংস্করণ নেই।


4
এটি আসলে প্রশ্নের উত্তর দেয় না। জেনেরিক অর্ডারড অভিধানটি স্পষ্টতই একটি জেনেরিক অভিধান এবং জেনেরিক তালিকার উপর ভিত্তি করে তৈরি হতে পারে।
জ্যাকবিবি

শ্রেণি ব্যবহারের একটি উপদেশ হ'ল যদি ইউআই পরিবর্তন না করে তবে কে বাস্তবায়নের বিষয়ে চিন্তা করে? ঠিক আছে, ভাষা নকশা / সংকলক দল, আসুন আমরা বলি যে জেনেরিকটি অ-জেনেরিক অংশটিকে উত্তরাধিকার সূত্রে উত্তরাধিকার সূত্রে পছন্দ করে । আমার স্পাইডি ইন্দ্রিয় বগল। প্রারম্ভিকদের জন্য: স্বতঃস্ফূর্ততা এবং বৈপরীত্য বৈকল্পিকতার জন্য বিবর্তনীয় পথে কোথাও পৃথক (তাত্ক্ষণিক) পূর্বপুরুষদের কোনও ভূমি খনি OrderedDictionary?
রাডারবব

15

OrderedDictionaryOverloads ইন্ডেক্স অপারেশন তাই একটি পূর্ণসংখ্যা সঙ্গে যে ইন্ডেক্স Nঅবস্থানে আইটেমটি পাবেন N, যখন একটি সঙ্গে সূচিবদ্ধ Objectআইটেম বস্তু coresponding উদ্ধার করা। এক একটি তৈরি করতে হলে OrderedDictionary<int, string>বলা myDict, এবং যোগ আইটেম (1, "জর্জ") এবং (0, "ফ্রেড"), যাতে, should myDict[0]"জর্জ" বা "ফ্রেড" আসতে?

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

ক্লাসটি যদি সিএলএসের অনুগত না হত তবে কেবল ভিবিএন নেটওয়্যারের সাথে কাজ করতে হত তবে একটি বুদ্ধিমান নকশাকৃত নামযুক্ত সূচকযুক্ত বৈশিষ্ট্য ব্যবহার করা যেতে পারে। সুতরাং, উপরের উদাহরণে, myDict.ByKey[0]"ফ্রেড" উপস্থাপন myDict.BySequence[0]করতে হবে , এবং "জর্জ" উপার্জন করেছেন। দুর্ভাগ্যক্রমে, সি # এর মতো ভাষাগুলি নামযুক্ত সূচকযুক্ত বৈশিষ্ট্যগুলি সমর্থন করে না। যদিও এই জাতীয় বৈশিষ্ট্য ছাড়াই উপরের সিনট্যাক্সটি ব্যবহারের জন্য কেউ কিছু কলসড করতে পারত, কাঠামোর ক্ষেত্রগুলিকে মোড়ানোর দুর্ভাগ্যজনক সিদ্ধান্ত Pointএবং এর Rectangleঅর্থ এই যে myDict.ByKey[0] = "Wally"কাজ করার জন্য myDict.ByKeyএকটি নতুন শ্রেণীর অবজেক্ট ফিরে আসতে হবে। একটি কাঠামো আরও দক্ষ হবে, তবে সংকলকরা কেবল পঠনযোগ্য কাঠামোর লেখার মতো দেখতে প্রত্যাখ্যান করবে (তবুও সম্পত্তি যে স্ট্রাক্ট দ্বারা ফিরিয়ে দেওয়া কাঠামোটি পরিবর্তন করবে নাByKey, তবে পরিবর্তে সংগ্রহটি পরিবর্তন করুন যেখানে এটি একটি রেফারেন্স রাখে)।

ব্যক্তিগতভাবে, আমি মনে করি একটি অভিধান-ইশ অবজেক্ট যা সন্নিবেশ ক্রমের উপর নজর রাখার জন্য নির্দিষ্ট করা হয়েছিল তা হ'ল একটি সুন্দর জিনিস হবে; আমি একটি অভিধান-ইশ অবজেক্টটিও চাই যা সহজে কোনও নির্দিষ্ট কীটির সাথে যুক্ত কীটি সহজেই ফিরিয়ে দিতে পারে (যাতে উদাহরণস্বরূপ যদি কারও ক্ষেত্রে সংবেদনশীল অভিধান থাকে এবং "জর্জি" কী দিয়ে একটি রেকর্ড যুক্ত করা হয়, একটি KeyValuePairএকটি গণনায় ফিরে আসা সমস্ত বস্তুর সন্ধান না করেই কী "জর্জ" এর সাথে কী সম্পর্কিত তা অভিধান জিজ্ঞাসা করতে পারে ।


3

কারণ অর্ডার বজায় রাখা ও (1) অনুসন্ধানকে বাধা দেয় যা আইডিয়েরিয়া বোঝায় যদি না আপনি দুটি সংগ্রহ (অর্ডারের জন্য, একটি অনুসন্ধানের জন্য) আবৃত না করেন যা কম পারফরম্যান্ট যুক্ত / সরিয়ে দেয় এবং মেমরির ব্যবহার বৃদ্ধি করে। অথবা স্বল্প স্মৃতি ব্যবহারের জন্য আপনার বিনিময়ে ধীর গতিতে দেখাতে পারে।

আমার অনুমান যে এখানে কোনও 'পরিষ্কারভাবে ভাল' পছন্দ ছিল না, তাই এটি স্ট্যান্ডার্ড লাইব্রেরিতে যায় নি। বিশেষত ২.০ এর কাছাকাছি, সি # এখনও জাভার ভুলগুলি থেকে শিখছিল। জাভা'র 'সমস্ত কিছুর এবং রান্নাঘর সিংক' তাদের স্ট্যান্ডার্ড লাইব্রেরিতে সংগ্রহের পদ্ধতির পাশাপাশি এড়াতে কোনও জিনিস হিসাবে দেখা গেলে আমি অবাক হব না।


1
ধীর লুক-আপ কম মেমরির বিনিময়ে রয়ে শুধু কার্যকরভাবে তোলে OrderedDictionaryএকটি List। আমি কল্পনা করতে পারি যে এর বৈধ ব্যবহারের ক্ষেত্রে যে কেউ OrderedDictionaryএটিকে বিশেষভাবে ব্যবহার করছে কারণ তাদের O (1) চেহারা রয়েছে এমন একটি সংগ্রহ শ্রেণীর প্রয়োজন রয়েছে তবে সন্নিবেশ ক্রমটিও মনে আছে, এক্ষেত্রে অতিরিক্ত মেমরি ব্যবহার অনিবার্য এবং এইভাবে গ্রহণযোগ্য।
Abion47
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.