+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

 

موفق باشید.

سلام خیلی ممنونم از راهنماییتون.

من کد زیر رو داشتم میخوندم . وقتی ران میشه به نظر خیلی ساده میاد اما متوجه نمیشم چطور نوشته و resize کلا اینجا چکار میکنه . 

  ;[string[] Names = new string[0
            (while (true
           }
               ;( "Console.WriteLine("Input Name
                ;()string Name = Console.ReadLine
              ;  (Array.Resize<string>(ref Names, Names.Length + 1
                ;Names[Names.Length - 1] = Name
           ;   (  )Console.Clear
                ;((Console.WriteLine(new string('_', 50
               ( foreach (string NameItem in Names
                {
                    ;(Console.WriteLine(NameItem
                {
                ;((Console.WriteLine(new string('_', 50
            {

{

{

{

 

 

توسط (102 امتیاز) 3

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

ببینید در این کد اول یک آرایه به طول 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,924 کاربر

دسته بندی ها

...