সি # তে অ্যারের আকার (দৈর্ঘ্য)


99

আমি কীভাবে সি # তে একটি অ্যারের আকার (দৈর্ঘ্য / আইটেমের সংখ্যা) নির্ধারণ করতে পারি?


4
@ মার্সেলো: ... তবে এটি "আমার চশমা কোথায়" এর মতো সত্যিকারের সাধারণ প্রশ্নের উত্তর দিতে পারে না। ;)
গুফা

4
"আকার" বলতে কী বোঝ? বাইটে উপাদান বা আকারের সংখ্যা?
ফ্রেডরিক মের্ক

4
@Fearofawhackplanet আমি উর্ধ্বগতি জানাই কারণ আমার যেমন দৈর্ঘ্যটি খুঁজে পাওয়ার একই সমস্যা ছিল বহুমাত্রিক অ্যারেগুলির জন্য কাজ করেনি এবং এই প্রশ্নের ফলস্বরূপ র্যাঙ্ক এবং গেটলিংথ (সূচক) আবিষ্কার করেছে।
দ্য ম্যাথামেগিজিয়ান

4
@ ফেরোওহাক্যাকপ্ল্যানেট আমি বিশ্বাস করি যে এটির 145,000 মতামত রয়েছে এর প্রাসঙ্গিকতার প্রমাণ হিসাবে। উত্সাহিত।
brycejl

উত্তর:


153

যদি এটি এক-মাত্রিক অ্যারে হয় a,

a.Length

এর উপাদানগুলির সংখ্যা দেবে a

যদি bএকটি আয়তক্ষেত্রাকার বহু-মাত্রিক অ্যারে হয় (উদাহরণস্বরূপ, int[,] b = new int[3, 5];)

b.Rank

মাত্রা (2) এবং প্রদান করবে

b.GetLength(dimensionIndex)

প্রদত্ত যে কোনও মাত্রার দৈর্ঘ্য পাবেন (মাত্রার জন্য 0-ভিত্তিক সূচক - সুতরাং b.GetLength(0)3 এবং b.GetLength(1)5)।

আরও তথ্যের জন্য সিস্টেম.আর্রে ডকুমেন্টেশন দেখুন ।

@ লুসেরো মন্তব্যগুলিতে যেমন উল্লেখ করেছেন, সেখানে একটি "জেগড অ্যারে" ধারণা রয়েছে যা সত্যই একক মাত্রিক অ্যারে (সাধারণত একক মাত্রিক) অ্যারে ছাড়া আর কিছুই নয়।

উদাহরণস্বরূপ, একজনের নিম্নলিখিত হতে পারে:

int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};

মনে রাখবেন যে সমস্ত 3 সদস্যের cদৈর্ঘ্য আলাদা। এই ক্ষেত্রে, আগের মত c.Lengthউপাদানের সংখ্যা ইঙ্গিত হবে c, (3) এবং c[0].Length, c[1].Lengthএবং c[2].Length3, 2, এবং 7, যথাক্রমে হবে।


4
সম্পূর্ণতার জন্য আপনি জেগড অ্যারেগুলির কাজটি (যেমন int[][]) ;-) তালিকাভুক্ত করতে পারতেন
লুসেরো

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

4
অবশ্যই আমি জানি যে আপনি ঠিক বলেছেন এবং সেজন্য আমি নিজেই উত্তর লেখার পরিবর্তে একটি হাসিখুশি মন্তব্যটি যুক্ত করেছি। যাইহোক, NET newbies এর মধ্যে [,]এবং এর মধ্যে পার্থক্য [][]স্পষ্ট বলে মনে হচ্ছে না, সুতরাং এটি এখনও মনে রাখা উপযুক্ত যে [][]এটি আপনার উত্তরগুলির অর্থে কোনও বহুমাত্রিক অ্যারে নয়।
Lucero

4
ভাল উত্তর. তবে, আপনি পরিবর্তন করতে চান হতে b.GetLength[0] is 3 and b.GetLength[1] is 5হবে b.GetLength(0) and b.GetLength(1)
ড্রোগানস

29

আপনি এই প্রশ্নের উত্তর খুঁজতে অ্যারের জন্য ডকুমেন্টেশনগুলি দেখতে পারেন ।

এই বিশেষ ক্ষেত্রে আপনার সম্ভবত দৈর্ঘ্য প্রয়োজন :

int sizeOfArray = array.Length;

তবে যেহেতু এটি এমন একটি প্রাথমিক প্রশ্ন এবং আপনার সন্দেহের উত্তর নেই, কেবল উত্তরটি বলার চেয়ে বরং উত্তরটি কীভাবে নিজেকে খুঁজে বের করতে হবে তা বলার অপেক্ষা রাখে।

ভিজ্যুয়াল স্টুডিও ইন্টেলিসেন্স

আপনি যখন কোনও ভেরিয়েবলের নাম টাইপ করেন এবং .কী টিপলে এটি আপনাকে সেই অবজেক্টে উপলব্ধ সমস্ত পদ্ধতি, বৈশিষ্ট্য, ইভেন্ট ইত্যাদির একটি তালিকা প্রদর্শন করে। আপনি যখন কোনও সদস্যকে হাইলাইট করেন তখন এটি আপনাকে কী করবে তার একটি সংক্ষিপ্ত বিবরণ দেয়।

এফ 1 টিপুন

আপনি যদি এমন কোনও পদ্ধতি বা সম্পত্তি খুঁজে পান যা আপনি যা চান তা করতে পারে তবে আপনি নিশ্চিত নন, আপনি এটির উপরে কার্সারটি সরাতে পারেন এবং সহায়তা পেতে F1 টিপুন। এখানে আপনি আরও বিস্তারিত বিবরণ এবং সম্পর্কিত তথ্যের লিঙ্কগুলি পাবেন।

অনুসন্ধান করুন

অনুসন্ধানের পদগুলি size of array in C#অনেকগুলি লিঙ্ক দেয় যা আপনাকে আপনার প্রশ্নের উত্তর এবং আরও অনেক কিছু বলে। একজন প্রোগ্রামারকে শিখতে থাকা সবচেয়ে গুরুত্বপূর্ণ দক্ষতার মধ্যে একটি হল কীভাবে তথ্য সন্ধান করা যায়। উত্তরটি নিজেকে খুঁজে পাওয়া প্রায়শই দ্রুত হয়, বিশেষত যদি একই প্রশ্ন আগে জিজ্ঞাসা করা হয়েছিল।

একটি টিউটোরিয়াল ব্যবহার করুন

আপনি যদি কেবল সি # শিখতে শুরু করেন তবে টিউটোরিয়ালটি অনুসরণ করা আপনার পক্ষে আরও সহজ হবে। আমি এমএসডিএন-তে সি # টিউটোরিয়ালগুলির সুপারিশ করতে পারি । আপনি যদি একটি বই চান, আমি প্রয়োজনীয় সি # সুপারিশ করব ।

স্ট্যাক ওভারফ্লো

যদি আপনি নিজে থেকে উত্তরটি সন্ধান করতে না পারেন তবে স্ট্যাক ওভারফ্লোতে প্রশ্নটি নির্দ্বিধায় পোস্ট করুন তবে আপনি এটির প্রশংসা করি যদি আপনি দেখান যে আপনি নিজেরাই উত্তরটি আগে সন্ধানের চেষ্টা করেছেন।


4
ভাল কাজ, মার্ক, তবে ওভারকিল হতে পারে!
নয়ন

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

12
এই পদ্ধতির জন্য সময় দেওয়ার জন্য +1 - "কোনও ব্যক্তিকে একটি মাছ দিন ..." ইত্যাদি
পিটার কেলি

যদি আমারও কখনও এটি করতে হয়, আমি কেবল এখানে আপনার উত্তরে অপগুলি পুনর্নির্দেশ করব =) এবং হ্যাঁ, আমি আপনার সাথে সম্পূর্ণ সম্মত!
নয়ন

4
এটি ভাল তবে আমি মনে করি এটি কোনওভাবে স্বয়ংক্রিয়ভাবে লিঙ্ক করা উচিত। তারা কি "দেখার উপযুক্ত উত্তর" পৃষ্ঠাটি শুরু করতে পারবেন না? আমি যুক্ত করতে চাই যে একটি জিনিস প্রশ্ন পোস্ট করার আগে এক স্ট্যাক ওভারফ্লো নিজেই পরীক্ষা করা উচিত। প্রায়শই আমি প্রশ্ন পোস্ট করা শুরু করি এবং তারপরে পপআপ সম্পর্কিত প্রশ্নগুলি দেখি। আমি নিশ্চিত না যে উত্তরটি এখানেও না থাকলে উত্তরটি ইন্টারনেটে অন্য কোথাও উপস্থিত রয়েছে কিনা।
ব্যবহারকারী420667

16

1 মাত্রিক অ্যারে জন্য

int[] listItems = new int[] {2,4,8};
int length = listItems.Length;

বহুমাত্রিক অ্যারে জন্য

int length = listItems.Rank;

1 মাত্রার আকার পেতে To

int length =  listItems.GetLength(0);

4
Rankসম্পত্তি আইটেম সংখ্যা ফেরত দেয় না, এটা মাত্রা সংখ্যার উল্লেখ করে।
গুফা 17

1 টি মাত্রিক অ্যারে দ্বারা সমর্থিত বৈশিষ্ট্যগুলির জন্য ডকুমেন্টেশন কোথায় পাব? (অর্থাত, Length, Rank, GetLength)
মিন Tran



5

একক মাত্রা অ্যারের জন্য, আপনি Lengthসম্পত্তিটি ব্যবহার করুন :

int size = theArray.Length;

একাধিক মাত্রার অ্যারের জন্য Lengthসম্পত্তি অ্যারেতে আইটেমের মোট সংখ্যা প্রদান করে। GetLengthমাত্রার একটির আকার পেতে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন :

int size0 = theArray.GetLength(0);

4

বেশিরভাগ সাধারণ ক্ষেত্রে 'দৈর্ঘ্য' এবং 'গণনা' ব্যবহৃত হয়।

অ্যারে:

int[] myArray = new int[size];
int noOfElements = myArray.Length;

টাইপড তালিকা অ্যারে:

List <int> myArray = new List<int>();
int noOfElements = myArray.Count;

1

এটি এর মতো হয়: 1 ডি:

 type[] name=new type[size]  //or =new type[]{.....elements...}

2 ডি:

 type[][]name=new type[size][] //second brackets are emtpy

তারপরে আপনি যেমন এই অ্যারে ব্যবহার করবেন:

 name[i]=new type[size_of_sec.Dim]

অথবা আপনি ম্যাট্রিক্সের মতো কিছু ঘোষণা করতে পারেন

type[ , ] name=new type [size1,size2]

0

এখন পর্যন্ত যা মিস করা হয়েছে তা হঠাৎ আমি বিরক্ত হয়ে পড়েছিলাম:

অ্যারের ভিতরে থাকা আইটেমগুলির পরিমাণ আমি কীভাবে জানব? কি .Lengthসমান .Countতালিকার?

উত্তরটি হ'ল এক্স টাইপের আইটেমগুলির পরিমাণ যা আপনার সাথে তৈরি এক্স টাইপের অ্যারেতে new X[number] ফেলেছে তা নিজেকে বহন করতে হবে !

যেমন একটি কাউন্টার ব্যবহার করে : int countItemsInArray = 0এবং countItemsInArray++আপনার অ্যারে প্রতিটি অ্যাসাইনমেন্টের জন্য।

(সবেমাত্র তৈরি করা অ্যারেতে ইতিমধ্যে বরাদ্দ করা প্রকারের আইটেমগুলির new X[number]জন্য সমস্ত numberরেফারেন্স (রেফারেন্স) রয়েছে, আপনি প্রথম অ্যাসাইনমেন্ট হিসাবে কোনও স্থানের ভিতরে নির্ধারণ করতে পারেন, উদাহরণস্বরূপ (যদিnumber = 100 এবং ভেরিয়েবলের নাম = a)a[50] = new X();

আমি জানি না যে সি # তৈরির সময় অ্যারের অভ্যন্তরের প্রতিটি জায়গার প্রাথমিক মান নির্দিষ্ট করে কিনা, যদি তা না হয় বা প্রাথমিক মান আপনি তুলনা করতে না পারেন (কারণ এটি এমন একটি মান হতে পারে যা আপনি নিজেরাই অ্যারেতে রেখেছিলেন), আপনি আপনি যদি ক্রমানুসারে শুরু করে নিরীক্ষণ না করেন তবে আপনাকে ইতিমধ্যে নির্ধারিত অ্যারের ভিতরে কোন স্থানগুলি ট্র্যাক করতে হবে 0 (যে ক্ষেত্রে সমস্ত স্থানের চেয়ে ছোটcountItemsInArray নির্ধারিত হবে তার ))

আপনার বিকল্প অ্যারে (দৈর্ঘ্য / আইটেমের সংখ্যা) এর উপর নির্ভর করে / "বিকল্প" বা "বিভাজন" হয়ে দাঁড়াতে হবে কিনা তার উপর নির্ভর করে যেটি এখনও আবরণ করতে হবে ("আইটেমের সংখ্যা" আমি সবেমাত্র দিয়েছি " আইটেমের পরিমাণ "এবং অন্যেরা .Lengthএর মানটির সাথে মিলে যায়number আমার কোডের উপরের কোডের সাথে মিলে যায়):

সি # এর একটি sizeofঅপারেটর রয়েছে ( https://docs.microsoft.com/en-us/dotnet/csharp/language-references/operators/sizeof )। অন্তর্নির্মিত প্রকারের জন্য ব্যবহার করা নিরাপদ (যেমন int) (এবং কেবল প্রকারভেদে চালিত হয় (ভেরিয়েবল নয়))। সুতরাং বাইটে bটাইপের একটি অ্যারের আকার intহবে b.Length * sizeof(int)

(ইতিমধ্যে উপরে বর্ণিত যেমন অ্যারেটির সমস্ত স্থান ইতিমধ্যে বরাদ্দ করা হয়েছে এবং sizeofকেবল ধরণের ক্ষেত্রে কাজ করার কারণে, কোনও কোড পছন্দ করে sizeof(variable)/sizeof(type)না বা ট্র্যাকিং ছাড়াই আইটেমের পরিমাণ উপার্জন করতে পারে না))

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