استفاده از یک شی در دو بلاک متفاوت!!

m_mx2009

Member
سلام به همه دوستان و مخصوصا آقای ناظم جناب theking

مطالب پست قبلی شما در خصوص متدهای کلاس Convert خیلی برام مفید بود .
ولی متاسفانه در جایی از برنامه ام به مشکل گیر کرده ام.اگه میشه منو راهنمایی کنین:

کد:
private void buttonX1_Click(object sender, EventArgs e)
        {

            myclass b = new myclass();
            
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            xxxxxxxxxxxxxxxx
           
        }


در قسمتی که با xxxxxxx مشخص کرده ام باید از خواص و متدهای کلاس myclass برای شئ b استفاده کنم.
امکان تعریف شئ در خارج از بلاک رو هم ندارم چون میخوام از ساختمان داده ها استفاده کنم(myclassساختمان داده است) .حالا شما به من بگین چطوری میتونم تو یه بلاک دیگه به شئ b دسترسی داشته باشم؟

به این دلیل میگم که نمیشه b رو خارج از اون بلاک تعریف کنم چون باید با هر بار کلیک کاربر یه شئ جدید ساخته بشه.

ممنون از راهنمایی هاتون.:rose::rose:
 

the_king

مدیرکل انجمن
سلام به همه دوستان و مخصوصا آقای ناظم جناب theking

مطالب پست قبلی شما در خصوص متدهای کلاس Convert خیلی برام مفید بود .
ولی متاسفانه در جایی از برنامه ام به مشکل گیر کرده ام.اگه میشه منو راهنمایی کنین:

کد:
private void buttonX1_Click(object sender, EventArgs e)
        {

            myclass b = new myclass();
            
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            xxxxxxxxxxxxxxxx
           
        }


در قسمتی که با xxxxxxx مشخص کرده ام باید از خواص و متدهای کلاس myclass برای شئ b استفاده کنم.
امکان تعریف شئ در خارج از بلاک رو هم ندارم چون میخوام از ساختمان داده ها استفاده کنم(myclassساختمان داده است) .حالا شما به من بگین چطوری میتونم تو یه بلاک دیگه به شئ b دسترسی داشته باشم؟

به این دلیل میگم که نمیشه b رو خارج از اون بلاک تعریف کنم چون باید با هر بار کلیک کاربر یه شئ جدید ساخته بشه.

ممنون از راهنمایی هاتون.:rose::rose:

اگر یک شیء ای در یک تابع تعریف کنید در خارج از اون تابع قابل دسترسی نیست، مگر اینکه خود اون تابع
به طریقی شیء رو در اختیار سایر بخش ها بذاره.
در ضمن این کدی که الان نوشتید یک ایرادی داره که شی b که در buttonX1_Click می سازید به درد
button1_Click نخواهد خورد، چون شیء b هر وقت وارد تابع buttonX1_Click می شوید ایجاد میشه و به محض خروج
از buttonX1_Click هم نابود میشه. در نتیجه وقتی button1_Click اجرا میشه دیگه b ای وجود نداره که به فکر
دسترسی بهش باشید. هر بار هم کد buttonX1_Click اجرا میشه یک شی جدید ساخته و نابود میشه.

متغیر b رو در خارج از buttonX1_Click تعریف کنید اما فقط زمانی در buttonX1_Click ایجاد اش
کنید که قبلا ایجاد نشده :
کد:
        private myclass b = null;

        private void buttonX1_Click(object sender, EventArgs e)
        {
            if (b == null)
            {
                b = new myclass();
            }
        }
اینطوری در همه توابع همجوار به b دسترسی خواهید داشت. فقط یادتان باشد که قبل از رخ دادن buttonX1_Click
نباید به محتویات b کاری داشته باشید، چون null است و شیء ای داخلش ایجاد نشده.
 

جدیدترین ارسال ها

بالا