PDA

View Full Version : مبتدی: فرق در این دو نوع فراخوانی



dr.undead
دوشنبه 27 مرداد 1393, 19:30 عصر
سلام یه سوال خیلی ساده چه تفاوتی بین فراخوانی یک تابع هست (در هر دو) که اینجوریه
اولی
sum(3,2)
و فراخوانی که قبلش نمونه سازی انجام میشه هست ؟
دومی
program oprgram=new program();
oprogram.sum(3,2);
و اینم میدونم که برای استاتیک کردن تابع استاتیک لااقل باید

oprogram.sum(3,2);
اینجوری نوشت
ممنون

plus
دوشنبه 27 مرداد 1393, 20:33 عصر
وقتی شما در یک کلاس، یک متد رو به صورت:
SampleMethod(sampleParameter)
فراخوانی میکنید، این کد معادل:
this.SampleMethod(sampleParameter)
هست به این معنی که متد SampleMethod از "شی جاری" اجرا میشه.البته در صورتی که کلاس شی جاری این متد رو داشته باشه.
این همون فراخوانی اولی هست که انجام دادین.

وقتی یک متد از یک کلاس رو به این صورت فراخوانی میکنید:

SampleClass obj = new SampleClass();
obj.SampleMethod(sampleParameter);

در این حالت شما یک شی جدید از کلاس SampleClass میسازید و متد SampleMethod اون شی رو فراخوانی میکنید.

احتمالا لازمه شما بیشتر در مورد کلاس، شی و ... بخونید تا این شبهات برطرف بشه.

dr.undead
دوشنبه 27 مرداد 1393, 22:42 عصر
یه چیزایی فهمیدم :دی
یعنی بستگی به نوع تابع داره که public یا static داره
static رو میشه به همین حالت
this.sum(11,11)
که معادل
sum(11,11)
هست میشه فراخوانی کرد
اما برای public باید حتما نمونه سازی کرد
درسته فهمیدم آیا ؟

plus
دوشنبه 27 مرداد 1393, 23:01 عصر
نه. در متد static و برای فراخوانی متد Static اصلا از this نمیشه استفاده کرد چون متد Static مربوط به شی خاصی نیست.
در متد static فقط میشه متدهای static دیگه رو فراخوانی کرد.
در متد غیر static هم میشه متد static رو به صورت ClassName.MethodName و هم متد غیر static رو فراخوانی کرد.
public/private/protected/internal هم access modifier هستن و ربطی به static بودن یا نبودن متد ندارن.یکی کتاب #C رو مطالعه کنید.

Mousavmousab
سه شنبه 28 مرداد 1393, 10:49 صبح
من پیشنهاد می کنم ، قبل از اینکه کار با کلامات کلیدی در هر زبان برنامه نویسی را یاد بگیری ، بعد از یک مثال ساده ،(خیلی کوچیک) سعی کم هدف استفاده از اون کلمه را بیابی، حالا هر چند کم. ولی درک کنی ، فقط نباید گفت که اینجا This باشه یا اونجا استاتیک باشه یا Private باشه یا نباشه !!! هدف از این کار چی بود که این قرارداد ها پیش آمد.

موفق باشید.

dr.undead
پنج شنبه 06 شهریور 1393, 16:08 عصر
من شنیدم کتاب آقای هاشمی خوبه
هر جا دنبالش بودم ورژن 2005 C# بود فک کنم .
یک کتاب خوب پیرامون مباحث c#.net و asp.net بتونید معرفی کنید ممنون میشم

elec60
پنج شنبه 06 شهریور 1393, 16:17 عصر
کتاب دایتل خوبه، ولی بهترین کتاب، کتاب جوزف البهاری هست : http://www.albahari.com

کتابهای فارسی زیاد بدرد نمیخورن، من خودم ۲۰۰۸ خواستم کتاب هاشمی رو بخونم دیدم بر خلاف کتابهای درست و حسابی به جای اینکه از مفاهیم پایه ای(مثل مفاهیم Type و انواع حافظه و ...) مستقیم رفته سراغ WinForms و چند تا مثال MessageBox زده و با زدن دکمه کادر پیغام نمایش میداد و فکر میکردم برنامه نوشتم!

با دایتل شروع کن، بعد C#‎‎ 5.0 in a Nutshell آقای البهاری رو بخون و بعد کتاب بسیار مفهومی و در عین حال بسیار پیچیده #CLR via C آقای جفری ریشتر رو بخون(البته خیلی زمان بره این کتاب)