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

نام تاپیک: موارد استفاده از get و set

  1. #1
    مهمان

    موارد استفاده از get و set

    آقا ببخشیدا من نمیفهمم لزوم وجود get va setدر سی شارپ چیه
    لطفا برای من توضیح بدید
    ممنون :D :oops:

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    Iran
    پست
    801
    برای بوجود آوردن Property برای کلاسها در #C از set و get استفاده میشود.
    کدی که در بلوک get قرار دارد موقع دسترسی به Proprty اجرا میشود و کد set در موقع تنظیم و مقداردهی آن.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    ایران - تهران
    پست
    2,342
    لزوم...

    برنامه نویسی یک هنر است!
    هنر هم جدا از زیبایی نیست. می شود بجای get و set این خواص را از طریق یک تابع هم دریافت کرد ولی اینطوری زیباتر است! :oops:

    در مورد کاربرد:

    علاوه بر مواردی که دوستمان گفتند به این مقاله هم رجوع کنید:
    مقدمه ای بر سی شارپ : قسمت- 3

  4. #4
    یه مثال ساده میشه یه نفر از get & set بزنه؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    با سلام
    فرض کنید یک کلاس داریم که یک خروجى تولید مى‌کند. نیاز داریم به یک متد Save براى ذخیره کردن خروجى، و دو خاصیت Length براى دانستن طول خروجى و Path براى مسیر خروجى.
    خاصیت Length فقط خواندنى هست و خاصیت Path هم خواندنى و هم نوشتنى.

    Public class MyClass
    Private int iLength;
    Private string iPath;
    public int Length{
    get{return iLength;}
    }
    public string Path{
    set{iPath=value;}
    get{return iPath;}
    }
    public bool Save(...){
    }

    صبا صبوحى

  6. #6
    حتی اون خاصیت text که برای textbox و .... داری مبتنی بر get , set ‌است . میخاهی توی property window متد بزاری؟

  7. #7
    کاربر دائمی آواتار iman_s52
    تاریخ عضویت
    مهر 1383
    محل زندگی
    اصفهان
    پست
    566
    کلا استفاده از فیلد های Pblic توصیه نمیشه ولی استفاده از Property های Pubnlic مشکلی نداره.
    اگر بخوای از یه کلاس به یه سری اطلاعات اون دسترسی پیدا کنی می تونی فیلد هاتو Private تعریف کنی و خصوصیت اونو Public تعریف کنی و مقادیر رو با get و Set بخونی و ست کنی.

  8. #8
    کاربر دائمی آواتار forodo
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شهر جدید پردیس
    پست
    1,468

    نقل قول: get and set

    سلام
    چه موقعی ای get و set استفاده می شن؟
    چرا وقتی من می تونم اینطوری تعریف کنم:
            public string con = @"Data Sorce=.;Initial Catalog=DB;...";

    چرا اینطوری بهتره تعریف بشه؟
            public string con = @"Data Sorce=.;Initial Catalog=DB;...";
    public string Con
    {
    get
    {
    return con;
    }
    set
    {
    con = value;
    }
    }

    فرق
        class abc
    {
    public string con;
    }
    private void button1_Click(object sender, EventArgs e)
    {
    abc a = new abc();
    a.con = "ali";
    MessageBox.Show(a.con);
    }

    با این چیه؟
        class abc
    {
    public string con;
    public string Con
    {
    get
    {
    return con;
    }
    set
    {
    con = value;
    }
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {
    abc a = new abc();
    a.Con = "ali";
    MessageBox.Show(a.Con);
    }

  9. #9

    نقل قول: get and set

    فقط جنبه امنیتی داره

  10. #10

    نقل قول: get and set

    نه اقا میشه باهاش کارای دیگه هم کرد

    private string _IDPK;
    public string IDPK
    {
    get { return _IDPK; }
    set
    {
    _IDPK = value;
    txtIDPK.Text = value;
    }
    }


    این یه مثال کوچولو بود
    ولی میشه وقتی اون مقدار IDPK ست شد یه تابعوو اجرا کرد یه event رو هندل کرد یا هر کاری که میشه تو برنامه نویسی کردو میشه اجرا کرد

  11. #11
    کاربر دائمی آواتار forodo
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شهر جدید پردیس
    پست
    1,468

    نقل قول: get and set

    اینکارهارو بدون get و set هم میشه انجام داد.
    مزیت get و set چیه که ازش استفاده کنیم.

  12. #12

    نقل قول: get and set

    نه شما فک کنین این مقدارو از یک فرم دیگه به این فرم میفرستیم
    چطور میشه تکس باکس رو پر کرد زمانی که IDPK رو تغییر میدیم؟

  13. #13
    کاربر دائمی آواتار forodo
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شهر جدید پردیس
    پست
    1,468

    نقل قول: get and set

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    نه شما فک کنین این مقدارو از یک فرم دیگه به این فرم میفرستیم
    چطور میشه تکس باکس رو پر کرد زمانی که IDPK رو تغییر میدیم؟
    توی یه کلاس اینو می نویسیم:
        class Class1
    {
    public static string TextboxMatn = "";
    }

    توی فرم اول که می خوام متن تکست باکس بریزه توی یه تکست باکس دیگه از یه فرم دیگه اینو می نویسیم:
            private void button1_Click(object sender, EventArgs e)
    {
    Class1.TextboxMatn = textBox1.Text;
    Form2 f = new Form2();
    f.ShowDialog();
    }

    توی فرم 2 که تکست باکش قرار متن تکست باکس فرم1 رو بگیره اینو می نویسیم.
            private void Form2_Load(object sender, EventArgs e)
    {
    textBox1.Text = Class1.TextboxMatn;
    }

  14. #14

    نقل قول: get and set

    خب عزیزم هزار تا راه هست که این کارو بکنی
    ولی به نظر من بهترین راه همون تعریف property هست و استفاده از متد set

  15. #15

    نقل قول: get and set

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

    public string con = @"Data Sorce=.;Initial Catalog=DB;...";
    public string Con
    {
    get
    {
    return con;
    }
    set
    {
    con = value;
    }
    }


    هیچ برتری ای نسبت به

    public string con = @"Data Sorce=.;Initial Catalog=DB;...";


    نداره. فقط کد رو شلوغ کرده و هیچ کمکی هم بهمون نمیکنه. اما get/set (که بهش میگن Accessors) کجا مورد استفاده داره؟

    کد زیر رو در نظر بگیرید (بعنوان نمونه):


    private int Temperature
    {
    get { return (int)(ViewState["Temperature"] ?? 0); }
    set { ViewState["Temperature"] = value; }
    }


    همونطوریکه می بینید، اینجا "دما" ی اتاق با استفاده از ViewState ها داره مدیریت میشه. یعنی استفاده کننده از جزییات پیاده سازی این Property اطلاع نداره و نمیدونه این "دما" داره از کجا استخراج میشه (یا در کجا نگهداری میشه). اگر شما Temperature Property رو به شکل فوق (با فرض اینکه مدیریتش بر عهده ViewState باشه) مدیریت نکنید، اونوقت هر جای برنامه که نیاز داشته باشید دما رو بگیرید، باید مستقیما به ViewState["Temperature"] دسترسی داشته باشید و این، درست نیست، چرا که اگر نیاز فردا روزی بنا به نیازهای پروژه نخواهید از ViewState برای مدیریت متغیر فوق استفاده کنید، اونوقت باید N نقطه از برنامه رو تغییر بدید و ...

    حالا مثال زیر رو در نظر بگیرید:

    public string ConnectionString
    {
    get { return this.connectionString; }
    private set { this.connectionString = value; }
    }


    به Modifier هایی که روی Property تعریف کردم، دقت کنید. در حال حاضر، شما می تونید ConnectionString Property رو بدلیل Public بودنش از همه جا Call کنید. اما، دقت کنید که set رو چطور private تعریف کرده ام. این بدین معنی هستش که علیرغم اینکه ConnectionString بصورت public تعریف شده، اما کسی (جز اعضای کلاس فعلی) اجازه SET کردن اون Property رو ندارن. پس فقط خودم، میتونم در کلاسی که تعریف کرده ام، Set اش کنم، و بقیه جاها، دیگر کلاس ها، از مقدار Set شده استفاده کنند.

    حالا تعریف زیر رو در نظر بگیرید:

    public string Temperature
    {
    get { return this.temperature; }
    set
    {
    if(this.temperature != value)
    {
    OnPropertyChanging("Temperature");
    this.temperature = value;
    OnPropertyChanged("Temperature");
    }
    }
    }


    اینجا، دارم با استفاده از Accessor ها، متودهای Changing و Changed ای رو Call میکنم تا دیگران در صورت لزوم، از تغییر Temperature آگاه بشن. حالا هر وقت، مقدار Temperature رو (هر کسی که دسترسی داره) تغییر بدن، متودهای متناظر Call خواهد شد و ...

    حالا مثال زیر رو در نظر بگیرید:


    abstract class Room
    {
    public abstract int Temperature
    {
    get;
    set;
    }
    }


    اینجا، کلاس "اتاق" به گونه ای تعریف شده که مابقی کلاس هایی که قراره از اون Derive بشن، اجازه override کردن Temperature رو داشته باشن و ... شما این کارها رو نمیتونید با تعریف یک متغیر انجام بدید...

    برای اطلاعات بیشتر لطفا به این آدرس رجوع کنید.

    موفق باشید.

تاپیک های مشابه

  1. سوال: آیا غالباً از متدهای Get و Set برای Encapsulation استفاده میشه؟
    نوشته شده توسط sahel65 در بخش C#‎‎
    پاسخ: 10
    آخرین پست: چهارشنبه 07 فروردین 1392, 22:28 عصر
  2. get و Set
    نوشته شده توسط Mahbadgroup در بخش C#‎‎
    پاسخ: 5
    آخرین پست: سه شنبه 19 اردیبهشت 1391, 22:06 عصر
  3. موارد استفاده از ! یا _
    نوشته شده توسط انگوران در بخش Access
    پاسخ: 1
    آخرین پست: دوشنبه 19 آذر 1386, 07:26 صبح
  4. استفاده از GET
    نوشته شده توسط angel_boy013 در بخش طراحی وب (Web Design)
    پاسخ: 8
    آخرین پست: چهارشنبه 18 بهمن 1385, 14:32 عصر
  5. موارد استفاده از کد امنیتی
    نوشته شده توسط saniak_robot در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: سه شنبه 05 اردیبهشت 1385, 09:12 صبح

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

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