সি # তে গতিশীল অ্যারে


112

সি # তে গতিশীল অ্যারে তৈরির জন্য কি কোনও পদ্ধতি আছে?


1
আপনি যদি এখনও পুরাতন কাদায় আটকে থাকেন তবে [<] এর পরিবর্তে তালিকা <> ব্যবহার করে আপনি অ্যারে ব্যবহার করতে পারেন es পুনরায় আকার দিন ()। এখানে একটি ভাল উদাহরণ। dotnetperls.com/array-resize
— জিয়ান

Dotnetperls.com/array-resize লিঙ্কটি কাজ করছে না। (এফওয়াইআই)
— সু লেলেলিন

উত্তর:


150

জেনেরিক তালিকাগুলি একবার দেখুন ।


13
প্রশ্নটি (সংক্ষিপ্ত এবং বর্ণনাতীত হলেও) জেনেরিক তালিকার বিষয়ে জিজ্ঞাসা করছে না - প্রশ্নটি dynamic[] এমএসডিএন.মাইক্রোসফটকম /en-GB/library/dd264736.aspx (ডায়নামিক ধরণের অ্যারে) বা ExpandoObject এমএসডিএন.মাইক্রোসফটকম / সম্পর্কে জিজ্ঞাসা করতে পারে এন-ইউএস / লাইব্রেরি /… আমি এগুলি উল্লেখ না করার জন্য উত্তরটি -1 করতে পারি
— লুক টি ওব্রায়ান

6
@ লুক্টো ব্রায়ান, গতিশীলতা সি # 4.0 তে প্রবর্তিত হয়েছিল, যা এই প্রশ্নটি মূলত জিজ্ঞাসা করার পরে পুরো বছর প্রকাশিত হয়েছিল। ওপি সম্ভবত মত একটি resizeable ডাটা স্ট্রাকচার সম্পর্কে জিজ্ঞাসা ছিল en.wikipedia.org/wiki/Dynamic_array
— ব্রায়ান Merrell

6
নিবন্ধগুলির কেবলমাত্র লিঙ্কগুলির সাথে থাকা উত্তরগুলি সহায়তামূলক নয়। লিঙ্কটি সক্রিয় থাকবে এমন কোনও গ্যারান্টি নেই।
— জ্যামেঙ্গুলার

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

88

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

একটি অ্যারে ব্যবহার করা

Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");

জেনেরিক তালিকা ব্যবহার করা। হুডের নীচে তালিকার <T> শ্রেণি স্টোরেজের জন্য একটি অ্যারে ব্যবহার করে তবে এটি এমন ফ্যাশনে করে যাতে এটি কার্যকরভাবে বাড়তে দেয়।

List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];

2
এই উদাহরণটি অর্ধ-খারাপ, কারণ আমরা দুজনেই
— অ্যারেলিস্ট

21
এই উত্তরটি আপনার @ মিগোলের চেয়ে ভাল, কারণ এটি কীওয়ার্ড হিসাবে উল্লেখ করার পরিবর্তে কীভাবে তালিকাটি <> বাস্তবে ব্যবহার করতে হয় তা দেখায়। "অর্ধ-খারাপ" -> "অর্ধ-ভাল" -> ভাল
— ফুগাস

56

কখনও কখনও সরল অ্যারেগুলি জেনেরিক তালিকার তুলনায় বেশি পছন্দ করা হয়, যেহেতু তারা বেশি সুবিধাজনক (উদাহরণস্বরূপ সংখ্যাসূচক বীজগণিত অ্যাপ্লিকেশনগুলির জন্য, বা আর বা মতলবের মতো পরিসংখ্যান সফ্টওয়্যার দিয়ে ডেটা বিনিময় করার জন্য)

এক্ষেত্রে আপনি আপনার তালিকাটি গতিশীলভাবে শুরু করার পরে ToArray () পদ্ধতিটি ব্যবহার করতে পারেন

List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");

string[] array = list.ToArray();

অবশ্যই, এটি কেবল তখনই উপলব্ধি হয় যদি অ্যারের আকারটি কখনই জানা যায় না বা পূর্ব-পূর্ব নির্ধারিত হয় । আপনি যদি প্রোগ্রামের কোনও পর্যায়ে ইতিমধ্যে আপনার অ্যারের আকারটি জানেন তবে এটি একটি নির্দিষ্ট দৈর্ঘ্যের অ্যারে হিসাবে শুরু করা ভাল। (উদাহরণস্বরূপ আপনি যদি কোনও রেজাল্টসেট থেকে ডেটা পুনরুদ্ধার করেন তবে আপনি এর আকারটি গণনা করতে পারেন এবং গতিশীলভাবে সেই আকারের একটি অ্যারে শুরু করতে পারেন)


1
যতক্ষণ আপনি ইনডেক্সার ব্যবহার করছেন ততক্ষণ তা মূল্যবান নয়।
— aaimnr

2
আর্যগুলি বেশি সুবিধাজনক নয় (তারা তালিকার <T> ইন্টারফেসের উপসেট অফার করে) এবং প্রায় একই কর্মক্ষমতা সরবরাহ করে, যেহেতু তালিকা <T> নীচে নিয়মিত অ্যারে ব্যবহার করে। তালিকা / জন্য: 1971ms array / জন্য: 1864ms (থেকে বেঞ্চমার্ক 6000000 উপাদানের জন্য পুনরাবৃত্তির stackoverflow.com/questions/454916/... )
— aaimnr

9
আপনি যদি আছে একটি ইন্টারফেসে একটি অ্যারের পাস তারপর এটি আবশ্যক একটি অ্যারের হবে। একটি তালিকা তৈরি করা এবং তারপরে আপনি এটি পাস করার ঠিক আগে এটিকে অ্যারে তৈরি করা অনেক সহজ। আমি এই উত্তরটি অন্যদের চেয়ে বেশি পছন্দ করি কারণ এটি প্রশ্নকে সম্বোধন করে!
— মাইকেল সিলিমসন

36

List<T>দৃ strongly়ভাবে টাইপ করা একটির জন্য, অথবা ArrayListআপনার কাছে নেট .1 .1 বা ভেরিয়েবল castালতে পছন্দ হয়।


2

গতিশীল অ্যারের উদাহরণ:

Console.WriteLine("Define Array Size? ");
int number = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Enter numbers:\n");
int[] arr = new int[number];

for (int i = 0; i < number; i++)
{
    arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arr.Length; i++ )
{
    Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString());
}
Console.ReadKey();

2

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

var dynamicKeyValueArray = new[] { new {Key = "K1", Value = 10}, new {Key = "K2", Value = 5} };

foreach(var keyvalue in dynamicKeyValueArray)
{
    Console.Log(keyvalue.Key);
    Console.Log(keyvalue.Value);
}

1

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


1

আপনি সংগ্রহ শ্রেণি থেকে অ্যারেলিস্ট অবজেক্টটি ব্যবহার করতে পারেন

using system.collections;
   static void main()
        {
        Arrylist arr=new Arrylist();
         }

আপনি যে উপাদানটি যুক্ত করতে চান তা ব্যবহার করতে পারেন whe

arr.add();

0

এই উত্তরটি আপনি যে উত্তরটি সন্ধান করছেন তা মনে হচ্ছে আমি কেন এটি করতে পারছি না: গতিশীল এক্স = নতুন এক্সপেন্ডোঅবজেক্ট {ফু = 12, বার = "বারো"}

ExpandoObjectএখানে https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx সম্পর্কে পড়ুন

এবং এখানে dynamicটাইপ করুন https://msdn.microsoft.com/en-GB/library/dd264736.aspx

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