PDA

View Full Version : حرفه ای: متد در متد



User Soual
شنبه 25 خرداد 1398, 21:45 عصر
سلام من میخوام یک کلاس بنویسم که در یکی از متد هاش متد داشته باشه


بزارید بهتر توضیح بدم


ما میدونیم کلاس اینجوری فراخوانی میشه


Classname Object = new Classname();


و میدونیم اینجوری میشه به متد هاش دسترسی داشت


Object.metod


حالا یک چیزی دقت کردین بعضی از متد های دوباره داخل هم میشن
مثلا

Object.metod.metode2

من یک کلاس به نام alfabet دارم
میخوام بک متد به نام language داشته باشم
که داخلش دومتد زبان داشته باشم

مثلا

()Alfabet Alfabet = new Alfabet

Alfabet.Language.Persian

یا

Alfabet.Language.English


باید چجوری بنویسم؟؟؟؟

دلتنگ اسمان
شنبه 25 خرداد 1398, 22:43 عصر
با سلام


class Person
{
private String name;
private int age;

public Person setName(String name)
{
this.name = name;
return this;
}

public Person setAge(int age)
{
this.age = age;
return this;
}

public void introduce()
{
MessageBox.Show(" نام: " + name + " :سن " + age + " ");
}
}



و فراخوانی متدها :




private void Form1_Load(object sender, EventArgs e)
{

Person person = new Person();

person.setName("علی").setAge(24).introduce();
}


در مورد مشکل شما از enum هم میتونید استفاده کنید.

User Soual
دوشنبه 27 خرداد 1398, 00:15 صبح
ببخشید شما متوجه نشدید


بلافرض
من یک کلاس به نام Alfabet دارم که یک تابع به نام Language دارد
حالا میخوام این تابع دو تابع دیگه به نام English و Persian داخلش داشته باشه مثل

(12)Alfabet.Language.English


اینجوری

mr.sirwan
دوشنبه 27 خرداد 1398, 00:25 صبح
ببخشید شما متوجه نشدید


بلافرض
من یک کلاس به نام Alfabet دارم که یک تابع به نام Language دارد
حالا میخوام این تابع دو تابع دیگه به نام English و Persian داخلش داشته باشه مثل

(12)Alfabet.Language.English


اینجوری

شما همچین سینتکسی کجا دیدی؟ توی سی شارپ ما همچین چیزی نداریم، و اینی که شما هم کد نمونه ش رو نوشتی اصلا متد نیست، این کد توی سی شارپ اینجوری میشه: کلمه language توی کلاس alphabet معرف یک پراپرتی از جنس یک کلاس دیگه هست که اون کلاس یک متد با نام English و یک متد با نام Persian داره

ASKaffash
دوشنبه 27 خرداد 1398, 07:54 صبح
سلام
Language یک متد نیست بلکه یک member از نوع field یا property است property set ندارد ولی property get دارد که خروجی آن میتواند یک کلاس باشد که متدهای مورد نظر شما در آن کلاس پیاده سازی شده است و شی کلاس اصلی از طریق سازنده به درون آن کلاس دوم ارسال شده است به نظر من با ایندکسر میتونید حرفه ای تر کلاس را بسازید چون آن عدد 12 بعنوان ورودی میتونه ورودی ایندکسر باشه

User Soual
دوشنبه 27 خرداد 1398, 21:07 عصر
شما همچین سینتکسی کجا دیدی؟ توی سی شارپ ما همچین چیزی نداریم، و اینی که شما هم کد نمونه ش رو نوشتی اصلا متد نیست، این کد توی سی شارپ اینجوری میشه: کلمه language توی کلاس alphabet معرف یک پراپرتی از جنس یک کلاس دیگه هست که اون کلاس یک متد با نام English و یک متد با نام Persian داره
میشه با کد بنویسید
لطفاااا

mr.sirwan
دوشنبه 27 خرداد 1398, 21:54 عصر
واسه حالتی که شما میخوای، به نظرم بهتره از enum استفاده کنی، اول یه enum type جدید به این شکل تعریف میکنی:
public enum Languages : byte
{
English = 0,
Persian = 1,
Germany = 2,
Turkish = 3
}

بعد داخل کلاس alphabet یه پراپرتی از جنس این Languages تعریف میکنی:


public class Alphabet
{
public Languages Language { get; set; }
}
مقدارهی این پراپرتی هم به اینشکل انجام میشه:

var alphabet = new Alphabet();
alphabet.Language = Languages.Persian;

mmbguide
چهارشنبه 29 خرداد 1398, 09:53 صبح
یه جستجو در خصوص NameSpace بکنید حتما جوابتون رو میگیرید