💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ حمیدرضا جلیلی
defininf public field in many classes
جامعه ASP.NET ایجاد شده در ۱۳ دی ۱۴۰۱

در برنامه program یک متغیر به نام payment داریم از نوع کلاس payment و internal

Payment payment;
 if (bankName == "saman")
                {
                    payment = samanPaymentFactory.CreatePayment(amount);

در کلاس NationalbankPaymentFactory باز هم یک متغیر از نوع پابلیک داریم از نوع کلاس NationalBankPayment

 var payment = new NationalBankPayment();
            payment.Amount = ammount;
            return payment;

همچنین در کلاسfactory SamanBankPayment هم دوباره یک متغیر پابلیک از نوع کلاس داریم

var payment = new SamanBankPayment ();
            payment.Amount = ammount;   
            return payment;

همچنین یک کلاس هم به نام payment از نوع پابلیک داریم

 public abstract class Payment
    {
        public decimal Amount { get; set; }
        public abstract string bank { get; }
    }

یه وقتی هست اینها private هستن میگیم که خب هرکدام تو قسمت خودشوت تعریف و استفاده میشوند اما اینکه همه اینها پابلیک هستن و اشتباهی هم صورت نمیگیره رو متوجه نمیشم ممنون میشم راهنمایی بفرمایید.

سلام،

سؤالتونو متوجه نشدم، اگر منظورتون متغیرهای داخل متدها هست، این متغیرها فقط داخل همون scope یا محدوده بلاک متد خونده میشه و اگر به مقداری نیاز داشته باشیم بعنوان خروجی متد return میشن.

محسن موحد ۱۳ دی ۱۴۰۱، ۱۷:۳۹

بررسی بیشتری انجام دادم وو متوجه شدم، منظور این بود که این همه متغیر پابلیک با یک نام چرا به مشکل نمیخورد که جواب این بود که تاز مانیکه کلاسی new نشود مشکلی پیش نمی‌آید و وقتی هم new شد دسترسی فقط به فیلدهای آن کلاس مقدور می‌باشد

حمیدرضا جلیلی ۱۵ دی ۱۴۰۱، ۱۱:۲۷

توی برنامه نویسی شی گرا زمانی که داخل کلاسی مثلا کلاس ClassA یک متغیر پابلیک به نام Variable تعریف میکنیم و توی کلاس ClassB هم متغیری به همون نام تعریف میکنیم، به این معنا نیست که کامپایلر این دو تا رو باهم قاطی میکنه. چون از نظر کامپایلر یکیشون ClassA.Variable هست و دیگری ClassB.Variable بنابراین بینشون تفاوت وجود داره.

مثل namespace‌ها میمونه که ما میتونیم توی دوتا namespace متفاوت دو کلاس هم نام داشته باشیم مثلا هم توی Namespace1 و هم Namespace2 کلاس‌های پابلیک ClassA رو تعریف کنیم بدون اینکه به هیچ مشکلی بر بخوریم. اگر جایی برای کامپایلر ابهام پیش بیاد، بهتون میگه که تمایز بین این دو رو مشخص کنید.

اما متغیر‌های هم نام اگر در کلاس‌های جدا باشند یا کلاس‌های هم نام اگر در namespace‌های جدا باشند مشکلی پیش نمیارن چون بینشون تمایز وجود داره.

بهترین پاسخ
محمدرضا میرزایی ۱۷ دی ۱۴۰۱، ۰۷:۱۸

توضیح کاملی بود ممنونم

حمیدرضا جلیلی ۱۷ دی ۱۴۰۱، ۱۱:۱۲