نمایش نتایج 1 تا 7 از 7

نام تاپیک: برگرداندن مقدار از یک کلاس

  1. #1

    برگرداندن مقدار از یک کلاس

    چه جوری میشه از یک کلاس چند مقدار با انواع مختلف برگشت داده بشه.مثلا 2 تا int و 1 bool

  2. #2
    اگه منظورتون متد یک کلاس هست می تونید از پارامترهای out استفاده کنید.

  3. #3
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    به نظر من،جواب جناب رضوی بهترین و درست‌ترین روش برایه اینکار است.

    یک روش که خودم هم ازش استفاده نکردم و برایه برگرداندنه تعداد کمی از پارامترها اصلاً توصیه نمیکنم، استفاده از ArrayList است. چونکه ArrayList به نوع داده‌ها اهمیت نمیده.
    اگر تعداد پارامترها و نوعشان را قبل از اجرا نمیشه دانست، ممکن است که این روش به کار بیاد. (منتها من توصیه میکنم که به عنوان آخرین روش از این استفاده بشد، اگر کسی روش دیگری برایه این حالت دارد پیشنهاد کند).

  4. #4
    کاربر دائمی آواتار mohammad272005
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    639

    class
    Program
    {
    staticvoid Main(string[] args)
    {
    string filePath = @"C:\temp.txt";
    DateTime creationTime;
    long size;
    if (GetInfo(filePath, out creationTime, out size))
    {
    Console.WriteLine("Creation Time: " + creationTime);
    Console.WriteLine("Size: " + size);
    }
    }
    privatestaticbool GetInfo(string filePath, outDateTime creationTime, outlong size)
    {
    creationTime =
    DateTime.MinValue;
    size = 0;
    if (!System.IO.File.Exists(filePath))
    returnfalse;
    System.IO.
    FileInfo file = new System.IO.FileInfo(filePath);
    creationTime = file.CreationTime;
    size = file.Length;
    returntrue;
    }
    }

  5. #5
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    با تشکر از مثالتان،ولی فکر کنم میشه یکمی ساده‌ترش کرد:(نکته: این کد کار نمیکند، به دلیل اینکه پارامترهایه out حتما باید در داخل متد مقداردهی شوند، اگر میخواهید که بعد از بازگشت از متد پارامترهها مقادیری که بهشان پاس داده شده بود را برگردانند به جایه out از ref باید استفاده شود, مثال پائین تر، با تشکر از محمدجان که این اشکال را به توجه من آوردند )

    نقل قول نوشته شده توسط mohammad272005 مشاهده تاپیک

    class Program
    {
    static void Main(string[] args)
    {
    string filePath = @"C:\temp.txt";

    if (System.IO.File.Exists(filePath))
    {
    DateTime creationTime = DateTime.MinValue;
    long size = 0;
    GetInfo(filePath, out creationTime, out size));
    Console.WriteLine("Creation Time: " + creationTime);
    Console.WriteLine("Size: " + size);
    }
    }
    private static void GetInfo(string filePath, outDateTime creationTime, outlong size)
    {
    if (!System.IO.File.Exists(filePath)) return;

    System.IO.FileInfo file = new System.IO.FileInfo(filePath);
    creationTime = file.CreationTime;
    size = file.Length;
    }
    }

  6. #6
    کاربر دائمی آواتار mohammad272005
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    639
    دوست من، آرژنگ جان، برنامة شما به دلیل زیر کار نمی کنه:
    Error 1 The out parameter 'creationTime' must be assigned to before control leaves the current method F:\Programming\Temp\ConsoleApplication13\ConsoleAp plication13\Program.cs 26 17 ConsoleApplication13

  7. #7
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط mohammad272005 مشاهده تاپیک
    دوست من، آرژنگ جان، برنامة شما به دلیل زیر کار نمی کنه:
    Error 1 The out parameter 'creationTime' must be assigned to before control leaves the current method F:\Programming\Temp\ConsoleApplication13\ConsoleAp plication13\Program.cs 26 17 ConsoleApplication13
    بله درست میفرمائید،پارامترهایه out احتیاج به مقداردهی در داخل متد دارند، و سوالی که پیش میاد این است که چگونه همان مقداری را که بهشان ارسال شد را میشود برگرداند؟ که استفاده از ref برایه اینکار میاد (نکته: فقط موقعی باید از ref استفاده شود که بخواهیم مقدار ارسال شده را برگردانند وگرنه استفاده از out حتما توصیه میشود)


    class Program
    {
    static void Main(string[] args)
    {
    string filePath = @"C:\temp.txt";

    if (System.IO.File.Exists(filePath))
    {
    DateTime creationTime = DateTime.MinValue;
    long size = 0;
    GetInfo(filePath, ref creationTime, ref size);
    Console.WriteLine("Creation Time: " + creationTime);
    Console.WriteLine("Size: " + size);
    }
    }

    private static void GetInfo(string filePath, ref DateTime creationTime, ref long size)
    {
    if (!System.IO.File.Exists(filePath)) return;

    System.IO.FileInfo file = new System.IO.FileInfo(filePath);
    creationTime = file.CreationTime;
    size = file.Length;
    }
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •