+1 امتیاز
سلام خسته نباشید

من تازه عضو شدم بنابراین اگر سوالم تکراریه میبخشید

من دنبال مطلب آموزشی درباره ی (.... Array.Resize<string>(ref هستم اما تو سایت وقتی array.resize رو میگردم مطلبی پیدا نمیشه میخواستم بپرسم آیا وجود نداره یا من غلط سرچ میکنم.

مرسی

1 پاسخ

+3 امتیاز

سلام ، هدفتون از کار با متد Array.Resize چی هستش ؟ چون که نمی تونید سایز آرایه ها رو تغییر بدین . این متد هم برخلاف اسمش آرایه رو تغییر سایز نمیده . کاری که انجام میده اینه که در پشت صحنه یک آرایه با سایزجدید  میاد ایجاد می کنه و محتوای آرایه قبلی رو به آرایه جدید انتقال میده و سپس آرایه قبلی رو از حافظه حذف می کنه .

به نظر بنده بهتره که با کلاس List بیاین کار کنید .

List<string> names = new List<string>(10); // initial length is 10

در کد بالا یک لیست با 10 خانه ایجاد میشه . یعنی سریعا حافظه اشغال میشه و بعدا کمبود حافظه تاثیری روش نداره . ثانیا کار باهاش هم خیلی راحته و متدهای جالبی نظیر حذف یک خانه ، اضافه کردن آیتم جدید ، جستجو و... رو داره که کاملا نیاز شما رو برطرف می کنه .

 

کار با کلاس Array.Resize :

int[] array1 = new int[5] { 1, 2, 3, 4, 5 };
            Array.Resize(ref array1, 20);
            for (int i = 0; i < array1.Length; i++)
            {
                Console.WriteLine("   [{0}] : {1}", i, array1[i]);
            }
            Console.ReadLine();

و خروجیش به شکل زیر هستش :

خروجی متد Array.Resize

 

موفق باشید.

سلام ، روند برنامه کاملا سر راست و مشخصه .

ببینید در این کد اول یک آرایه به طول 1 ساخته شده ( آرایه ای که فقط 1 خانه داره ). بعد در یک حلقه while بی نهایت اومده هر بار یک مقدار رو از کاربر می گیره و در آرایه ذخیره می کنه . به این شکل کار می کنه که ابتدا مقدار رو از کاربر میگیره و با استفاده از متد Array.Resize یک خانه به آرایه قبلی ( Names ) اضافه می کنه . اگه پاسخ قبلی بنده رو خونده باشید توضیح دادم که این متد یک آرایه جدید با طول جدید می سازه و مقادیر آرایه قبلی رو به داخل آرایه جدید کپی می کنه . 

بعد از اینکه آرایه رو تغییر سایز داد با استفاده از دستور زیر :

 ;  (Array.Resize<string>(ref Names, Names.Length + 1

بعد میاد مقدار جدید رو به آخرین خانه آرایه اضافه می کنه :

                 ;Names[Names.Length - 1] = Name

و سپس با استفاده از حلقه foreach مقادیر رو به خروجی میفرسته .
 

توسط (6,145 امتیاز) 5 11 116
سلام خیلی خیلی ممنونم . متوجه شدم.

مرسی
توسط (102 امتیاز) 3
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,921 کاربر

دسته بندی ها

...