এনামে সংজ্ঞায়িত আইটেমের সংখ্যা আমি কীভাবে পেতে পারি?
এনামে সংজ্ঞায়িত আইটেমের সংখ্যা আমি কীভাবে পেতে পারি?
উত্তর:
আপনি স্থিতিশীল পদ্ধতিটি ব্যবহার করতে পারেন Enum.GetNames
যা এনামের সমস্ত আইটেমের নাম উপস্থাপন করে এমন অ্যারে প্রদান করে। এই অ্যারের দৈর্ঘ্যের বৈশিষ্ট্য এনামে সংজ্ঞায়িত আইটেমের সংখ্যার সমান
var myEnumMemberCount = Enum.GetNames(typeof(MyEnum)).Length;
প্রশ্ন হচ্ছে:
এনামে সংজ্ঞায়িত আইটেমের সংখ্যা আমি কীভাবে পেতে পারি?
"আইটেম" সংখ্যাটি সত্যই দুটি সম্পূর্ণ ভিন্ন জিনিস বোঝাতে পারে। নিম্নলিখিত উদাহরণ বিবেচনা করুন।
enum MyEnum
{
A = 1,
B = 2,
C = 1,
D = 3,
E = 2
}
"আইটেম" সংখ্যায় কী সংজ্ঞায়িত হয় MyEnum
?
আইটেমের সংখ্যা 5? ( A
, B
, C
, D
, E
)
নাকি এটা 3? ( 1
, 2
, 3
)
(5) এ সংজ্ঞায়িত নামের সংখ্যা MyEnum
নিম্নরূপে গণনা করা যেতে পারে।
var namesCount = Enum.GetNames(typeof(MyEnum)).Length;
(3) এ সংজ্ঞায়িত মানগুলির সংখ্যা MyEnum
নিম্নলিখিত হিসাবে গণনা করা যেতে পারে।
var valuesCount = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Distinct().Count();
var valuesCount = ((MyEnum[])Enum.GetValues(typeof(MyEnum))).Distinct().Count();
,।
Default = 1, A4 = 1, Portrate = 1, A4Portrait = 1, Landscape = 2, A4Landscape = 2, ...
;)।
এনাম.গেটভ্যালিউস ( টাইপফ (মাইইনাম))। দৈর্ঘ্য;
এই প্রশ্নের একটি সি উত্তরে একটি নিফটি ট্রিক আমি দেখেছি, এনামে কেবল একটি শেষ উপাদান যুক্ত করুন এবং এনুমে কতগুলি উপাদান রয়েছে তা জানাতে এটি ব্যবহার করুন:
enum MyType {
Type1,
Type2,
Type3,
NumberOfTypes
}
আপনি যেখানে 0 বাদে আরম্ভের মানটি সংজ্ঞায়িত করছেন সেখানে আপনি উপাদানগুলির সংখ্যা নির্ধারণের জন্য নাম্বার অফ টাইপ - টাইপ 1 ব্যবহার করতে পারেন।
আমি নিশ্চিত না যে এই পদ্ধতিটি এনুম ব্যবহারের চেয়ে দ্রুত হবে কিনা এবং আমি নিশ্চিত নই যে এটি করার উপযুক্ত উপায় হিসাবে বিবেচনা করা হবে কিনা, কারণ আমাদের কাছে এই তথ্য আমাদের কাছে নিশ্চিত করার জন্য এনুম রয়েছে।
আপনি এনাম.গেটনামগুলি ব্যবহার করতে পারেন আপনার এনামের একটি মূল্যবান সংখ্যা ফিরিয়ে আনতে এবং তারপরে ফলাফলটি গণনা করুন।
গেটনামগুলি গেটভ্যালুগুলির মতো একই ফলাফল তৈরি করে তবে দ্রুত।
আপনি যদি আমার মতো প্রায়শই উপরের সমাধানটি লিখতে থাকেন তবে আপনি এটি জেনেরিক হিসাবে প্রয়োগ করতে পারেন:
public static int GetEnumEntries<T>() where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
throw new ArgumentException("T must be an enumerated type");
return Enum.GetNames(typeof(T)).Length;
}
আমি এখনই এটি সন্ধান করছিলাম, এবং বর্তমান সমাধানের পাঠযোগ্যতার সাথে সন্তুষ্ট নই। আপনি যদি অনানুষ্ঠানিকভাবে বা কোনও ছোট প্রকল্পে কোড লিখছেন তবে আপনি আপনার এনামের শেষে "দৈর্ঘ্য" নামে অন্য একটি আইটেম যুক্ত করতে পারেন। এইভাবে, আপনাকে কেবল টাইপ করতে হবে:
var namesCount = (int)MyEnum.Length;
অবশ্যই যদি অন্যরা আপনার কোড ব্যবহার করে চলেছে - বা আমি নিশ্চিত যে আরও অনেক পরিস্থিতিতে আমার পক্ষে প্রযোজ্য না - তবে এই সমাধানটি অসুস্থ থেকে ভয়ঙ্কর পর্যন্ত পরামর্শ দেওয়া যে কোনও জায়গায় হতে পারে।
ভিজ্যুয়াল বেসিকের জন্য:
[Enum].GetNames(typeof(MyEnum)).Length
আমার সাথে কাজ করেনি, তবে
[Enum].GetNames(GetType(Animal_Type)).length
করেছে।