c# বহুমাত্রিক অ্যারে




arrays multidimensional-array (4)

প্রথম উদাহরণে আপনি একটি jagged অ্যারে বলা হয় যা তৈরি করার চেষ্টা করছেন।

double[][] ServicePoint = new double[10][9].

উপরের বিবৃতিটি যদি নীচের মত সংজ্ঞায়িত করা হয়েছে তবে এটি কাজ করবে।

double[][] ServicePoint = new double[10][]

এর মানে হল আপনি 10 আকারের একটি অ্যারে তৈরি করছেন যা এটির ভিতরে 10 ভিন্ন আকারের আকারের অ্যারে সঞ্চয় করতে পারে। সাধারণ পদগুলিতে অ্যারের অ্যারে। নীচের চিত্রটি দেখুন, যা একটি জ্যাগেড অ্যারে চিহ্নিত করে।

http://msdn.microsoft.com/en-us/library/2s05feca(v=vs.80).aspx

দ্বিতীয়টি মূলত একটি দুই মাত্রিক অ্যারে এবং সিনট্যাক্সটি সঠিক এবং গ্রহণযোগ্য।

  double[,] ServicePoint = new double[10,9];//<-ok (2)

এবং একটি দু-মাত্রিক অ্যারের অ্যাক্সেস বা সংশোধন করার জন্য আপনাকে উভয় মাত্রা পাস করতে হবে, কিন্তু আপনার ক্ষেত্রে আপনি কেবল একটি মাত্র মাত্রা অতিক্রম করছেন, তাই ত্রুটি কেন

সঠিক ব্যবহার হবে

ServicePoint[0][2] , প্রথম সারিতে একটি আইটেম, তৃতীয় কলামে উল্লেখ করে।

আপনার দুই মাত্রিক অ্যারের ছবির rep

double[][] ServicePoint = new double[10][9]; // <-- gives an error (1)
double[,] ServicePoint = new double[10,9]; // <-- ok (2)

তাদের পার্থক্য কি? (1) একটি ত্রুটি উত্পন্ন, কারণ কি?

এবং

double d = new double[9]
ServicePoint[0] = d;

ব্যবহার করে (2) একটি ত্রুটি প্রম্পট হবে। কেন?


double[][] জ্যাগেড অ্যারে বলা হয়, অভ্যন্তরীণ মাত্রা ঘোষণা মধ্যে নির্দিষ্ট করা হয় না। একটি আয়তক্ষেত্রাকার অ্যারের থেকে ভিন্ন, প্রতিটি অভ্যন্তরীণ অ্যারে একটি ইচ্ছাকৃত দৈর্ঘ্য হতে পারে। প্রতিটি অভ্যন্তরীণ অ্যারে নিখুঁতভাবে একটি খালি অ্যারের চেয়ে নল শুরু হয়। প্রতিটি অভ্যন্তরীণ অ্যারে নিজে তৈরি করা উচিত: রেফারেন্স [C # 4.0 সংক্ষেপে নির্দিষ্ট রেফারেন্স]

for (int i = 0; i < matrix.Length; i++)
{
    matrix[i] = new int [3]; // Create inner array
    for (int j = 0; j < matrix[i].Length; j++)
        matrix[i][j] = i * 3 + j;
}

double[,] rectangular arrays বলা হয়, যা প্রতিটি মাত্রা আলাদা করতে কমা ব্যবহার করে ঘোষণা করা হয়। কোডের নিচের অংশটি একটি আয়তক্ষেত্রাকার 3-বাই -3 ডায়মেনশনাল অ্যারে ঘোষণা করে, এটি 0 থেকে 8 নম্বর দিয়ে শুরু করে:

int [,] matrix = new int [3, 3];
for (int i = 0; i < matrix.GetLength(0); i++)
    for (int j = 0; j < matrix.GetLength(1); j++)
        matrix [i, j] = i * 3 + j;

এক অ্যারের একটি অ্যারে, এবং এক একটি 2 ডি অ্যারে হয়। সাবেক jagged করা যাবে, পরের অভিন্ন।

অর্থাৎ, একটি double[][] বৈধভাবে হতে পারে:

double[][] x = new double[5][];

x[0] = new double[10];
x[1] = new double[5];
x[2] = new double[3];
x[3] = new double[100];
x[4] = new double[1];

অ্যারে প্রতিটি এন্ট্রি double একটি অ্যারের একটি রেফারেন্স কারণ। একটি jagged অ্যারে দিয়ে, আপনি আপনার দ্বিতীয় উদাহরণের মতো একটি অ্যারে একটি অ্যাসাইনমেন্ট করতে পারেন:

x[0] = new double[13];

দ্বিতীয় আইটেমটিতে, এটি একটি অভিন্ন 2 ডি অ্যারের কারণ, আপনি একটি সারি বা কলামে 1 ডি অ্যারে বরাদ্দ করতে পারবেন না, কারণ আপনাকে সারি এবং কলাম উভয়ই সূচী করতে হবে, যা আপনাকে একক double :

double[,] ServicePoint = new double[10,9];

ServicePoint[0]... // <-- meaningless, a 2d array can't use just one index.

আপডেট

আপনার প্রশ্নের উপর ভিত্তি করে ব্যাখ্যা করার জন্য, আপনার # 1টির সিনট্যাক্স ত্রুটি ছিল কারণ আপনার এটি ছিল:

double[][] ServicePoint = new double[10][9];

এবং আপনি নির্মাণের সময় দ্বিতীয় সূচক নির্দিষ্ট করতে পারবেন না। কী হল ServicePoint একটি 2 ডি অ্যারে নয়, তবে একটি 1 ডি অ্যারের (অ্যারের) এবং এইভাবে আপনি 1 ডি অ্যারের (অ্যারের) তৈরি করছেন, তাই আপনি কেবল একটি সূচক নির্দিষ্ট করেছেন:

double[][] ServicePoint = new double[10][];

তারপরে, যখন আপনি অ্যারেতে প্রতিটি আইটেম তৈরি করেন, তখন প্রত্যেকেই অ্যারে থাকে, তারপরে আপনি তাদের মাত্রাগুলি নির্দিষ্ট করতে পারেন (যা পৃথক হতে পারে, তাই শব্দটি জ্যাগেড অ্যারে):

ServicePoint[0] = new double[13];
ServicePoint[1] = new double[20];

আশা করি এইটি কাজ করবে!


double[,] একটি 2 ডি অ্যারে (ম্যাট্রিক্স), যখন double[][] অ্যারের একটি অ্যারে ( জ্যাগেড অ্যারে ) এবং সিনট্যাক্স হয়:

double[][] ServicePoint = new double[10][];






multidimensional-array