اگر در فرم 2 ( در مثالی که شمات فرستادید) و به جای کد
f1.label1.Text = "Changed via Form2";
کد
f1.label1.Dispose();
نوشته شود چه اتفاقی می افد؟
قرض کنید یک class library نوشتید که قراره دیگران از این لایبرری شما استفاده کنند. ئ کلاسی مانند زیر در کلاس های شما می باشد:
class Adult
{
public uint age;
// other members
}
همه می دانید که برای Adult مقدار مینیمم سن باید 18 باشد.
آیا شما با کد فوق می توانید مطمئن شوید که class consumer شما مقدار age را به درستی وارد می کند؟
مگر اینکه در مستندات لایبرری خودتون تاکید کنید که "کاربر گرامی لطفا مقدار سن را در کلاس adult کمتر از 18 وارد ننمایید در غیر این صورت مسئولیت عواقب آن با خودتان می باشد!!!"
حال به تعریف زیر توجه کنید :
class Adult
{
private uint age=18;
public uint Age
{
get
{
return age;
}
set
{
if (value < 18)
throw new ArgumentOutOfRangeException();
age = value;
}
}
}
باز فرض کنید که شخصی به شما چیزی برای خوردن می دهد :
شما دو راه دارید
1) یا اینکه چشماتون را می بندید و دهنتون را باز می کنید که دوستتون هر چی خواست بریزه توی دهان شما ( که در این صورت معلوم نیست که پس از خوردن آن شی چه بلایی سر شما خواهد آمد. زنده خواهید ماند؟ به فضا خواهید رفت و ...)
2) هر چیزی که قراره به شا داده بشه که بخورید را ، از دئستتون می گیرید و پس از بررسی چند تا کار می توانید انجام دهید :
الف) آن چیز را می خورید ( دیتا درست است)
ب) آن چیز را به دوستتون بر می گردونید(دیتا خطرناکه)
ج) آن را اصلاح می کنید ( دیتا را ویرایش کرده و سپس می خورید)
...
می بینید که در روش دوم امکان زنده ماندن شما پس از این سناریو به مراتب بیشتر از روش اول است.
و نکته آخر اینکه :
یکی از اصول مهم شی گرایی میگه که ،به هر کسی به همان اندازه که نیاز دارد اطلاعات بدهید، نه بیشتر نه کمتر)
وقتی فقط قراره text یک textbox از جای دیگری تغذیه شود، معنایی ندارد که backColor آن هم قابل دسترسی باشد..