একটি জেনেরিক <টি> টাইপযুক্ত একটি ভেরিয়েবলের সাথে টাইপ উদাহরণ তৈরি করা


85

নিম্নলিখিত কোডটি অর্জন করা কি সম্ভব? আমি জানি এটি কাজ করে না, তবে আমি ভাবছি যে সেখানে কোনও কর্মশালা আছে কিনা?

Type k = typeof(double);
List<k> lst = new List<k>();

আপনার মন্তব্য দ্বারা বিভ্রান্ত বিট "এটি সি # 4.0 এ অর্জন করা যেতে পারে।" এটি পারবেন না, অন্তত আপনি যেভাবে দেখিয়েছেন তেমন নয়। সি # 4 এর এখনও জাইলিক ধরণের পরামিতিগুলি সংকলনের সময় নির্দিষ্ট করা প্রয়োজন; আপনি এখনও জেনেরিক টাইপ প্যারামিটার হিসাবে কোনও প্রকার ভেরিয়েবল পাস করতে পারবেন না।
itowlson

4
প্রশ্নগুলি যখন প্রশ্ন হিসাবে জিনিস দয়া করে। উল্লিখিত কোডটি সি # 4.0 এর সাথে সম্পন্ন করা যাবে না।
ল্যাসে ভি কার্লসেন


C # 4.0 জিনিস সম্পর্কে দুঃখিত। আমি বুঝিয়েছি যে উত্তরটি # # 4.0 তে ধারণাগুলি ব্যবহার করতে পারে, কোডটি সি # 4.0 তে কাজ করবে এমনটি অগত্যা নয়। ডাঃ জোকপু সম্পাদনা করার জন্য ধন্যবাদ।
ক্রিস

12
আমি মনে করি এই প্রশ্নটি নিখুঁতভাবে বর্ণিত হয়েছে - কেবলমাত্র সঠিক পরিমাণের বিশদ!
রানহোল্ট

উত্তর:


119

হ্যা এখানে:

var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);

আমি মনে করি এটিই আমি চাই। আমাকে ডাবল চেক করুন এবং আমি আপনাকে মুহুর্তের উত্তর হিসাবে চিহ্নিত করব।
ক্রিস

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

আমি মূলত একটি তালিকা তৈরি করতে চাই <> যেখানে টাইপটি টাইপ ভেরিয়েবল হিসাবে নির্দিষ্ট করা হয়।
ক্রিস

4
ধন্যবাদ ডেভিড এম, আপনার কোডটি আমার যা প্রয়োজন ঠিক তা করে। যারা উত্তর দিতে অক্ষম তাদের জন্য দুঃখিত কারণ আমি পর্যাপ্ত প্রশ্ন সরবরাহ করি নি।
ক্রিস

জেনেরিক পদ্ধতিগুলির জন্য কি একইভাবে করা সম্ভব? আমি পদ্ধতির জন্য গতিশীল টাইপ পাস করতে হবে, আমি নীচের লিঙ্কটি আমার সমস্যা পোস্ট করেছেন stackoverflow.com/questions/4101784/...
Mathiyazhagan

3

একটি পরিষ্কার উপায় জেনেরিক পদ্ধতি ব্যবহার করা হতে পারে। এরকম কিছু করুন:

static void AddType<T>()
    where T : DataObject
{
    Indexes.Add(typeof(T), new Dictionary<int, T>());
}

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