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

صدا زدن تابع غیر استاتیک بدون ساختن شی از کلاس

+1 امتیاز

چرا وقتی کلمه استاتیک رو از تابعی که نوشتم پاک میکنم برنامه خطا میده ؟

static void Main(string[] args)
        {

            int x = 10;
            int y = func(x);
            Console.WriteLine("x=" + x + "y=" + y);
            Console.ReadLine();



            Console.ReadKey();

        }
         static  int func(int a)
        {
            a++;
            return a;
        }

 

سوال شده تیر 1, 1393  بوسیله ی daniyaltjm (امتیاز 840)   47 88 103
دوباره تگ گذاری شد تیر 16, 1393 بوسیله ی BlueBlade

1 پاسخ

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

 متد غیر static رو نمیشه  بدون ساختن شی از کلاس بطور مستقیم  صدا زد .

اصولا در همه ی زبان های برنامه نویسی تابع رو وقتی static میزارن که تابع ربطی به شی نداشته باشه و مربوط به خاصیت کلاس باشه. اگر function شما این ویژگی رو نداره بهتره static نباشه .

مثلا فرض کنید یک کلاس برای ذخیره سازی چند تا اسم دارید یک متد size داره که تعداد اسم های ذخیره شده رو بر میگردونه خب طبیعتا صدا زدن size بدون داشتن شی از کلاس منطقی نیست چون size مشخص نیست این جا size() نمی تونه static باشه . 

ولی خب مثلا تابع WriteLine داخل کلاس Console چون از WriteLine برای نوشتن یک متن استفاده میشه و ربطی به شی کلاس نداره بصورت static نوشته شده و برای صدا زدنش نیازی به ساختن شی از Console نیست .

 

اگر تابع مثال شما static نیست به این شکل عمل کنین :‌

class Program
{
     static void Main()
     {
          Program p = new Program();
          int x = 10;
          int y = p.func(x);
          //...

     }

     int func(int a)
     {
          a++;
          return a;
     }
}

 

پاسخ داده شده تیر 1, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده تیر 1, 1393 بوسیله ی BlueBlade
program p چی هست دیگه؟
نحوه تعریف یک شی از کلاس Program هست .
خوب برای چی یک نمونه ازش ساختی؟
برای صدا زدن متد غیر static  نیاز به ساختن شی داریم یعنی  متد غیر static باید روی شی کلاس صدا زده بشه . بالا هم توضیح دادم.
مخم هنگ کرد بابا!!!
:)) طوری نیست دیگه چیز خاصی نیست همین ۲ تا نکتست عادت می کنی
...