اولویت بندی ترتیب اجرای آرگومانهای دستوری ارسالی به یک تابع - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۱۶۴ نفر آنلاین
۰ عضو و ۱۶۴ مهمان در سایت حاضرند

اولویت بندی ترتیب اجرای آرگومانهای دستوری ارسالی به یک تابع

0 امتیاز
42 بازدید

سلام

سوال من این هست که چطور میشه تعدادی آرگومان رو که به صورت دستوری هست به یک تابع بفرستم و اولویت اجراش رو خودم تعیین کنم؟

برای مثال میخوام  تو این کد، تابع WriteLine ابتدا result رو به رشته تبدیل کنه و در خروجی نمایش بده، بعد منتظر فشردن کلیدی از سوی کاربر باشه.

namespace Practice
{
    class Program:System.Object
    {
        static void Main(string[] args)
        {
            byte x = 23;
            byte y = 24;
            int result = x & y;

            System.Console.WriteLine(result.ToString(),
                System.Console.ReadKey());
        }
    }
}

 

 

سوال شده مهر 7, 1393  بوسیله ی امیدوار (امتیاز 928)   3 12 47

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

ترتیب صدا زدن توابع داخل #C از چپ به راست هست.

دلیل این که کد شما به اون شکل کار میکنه چیز دیگه ای هست .

این کد :

System.Console.WriteLine(result.ToString(),
                System.Console.ReadKey());

قبل از اجرای بدنه تابع باید ورودی هاش مشخص باشن پس Console.readkey قبل از چاپ شدن باید انجام بشه و راهی برای عوض کردن ترتیب وجود نداره .

ضمنا کدی که نوشتید برای انجام اون کاری که مد نظر شماست صحیح نیست

چون متد Console.ReadKey یک کلاس از ConsoleKeyInfo بر می گردونه و متد Write  تابعی نداره که یک ورودی String بگیره یک ورودی هم ConsoleKeyInfo  

پس  این تابع رو صدا می زنه  :

WriteLine(string format, params object[] arg)

دلیل هم این هست که شی object قابل تبدیل به همه انواع هست .

حالا اگر به این شکل بنویسید :

System.Console.WriteLine("{0}",
                   System.Console.ReadKey());

و هر عددی رو وارید کنید  این نوشته Write میشه :  System.Console.KeyInfo  که احتمالا اون چیزی که می خواهید نیست . 

 

برای انجام اون کاری که گفتید نباید ReadKey  رو به تابع بفرستید  داخل یک خط جدا بنویسید.

پاسخ داده شده مهر 9, 1393 بوسیله ی BlueBlade (امتیاز 15,742)   13 17 85
...