جلسه چهاردهم

Partial | Class Casting | Generics


تمرین 1 : با 2 مثال تفاوت Value Type ها و Reference Type ها را نمایش دهید!

پیشنهاد : از int برای Value  و از کلاس Form برای Reference ها استفاده کنید.


تمرین 2 : یک پروژه از نوع Class Library ایجاد کنید . 

کلاس دلخواهی تعریف کنید و حداقل یک Property با Modifier ، internal تعریف کنید.

پس از Build کردن پروژه از این کلاس ( فایل dll ) در یک پروژه ی WindowsForm استفاده کنید.

راهنمایی : Add Reference کنید .


آیا می توان از Property اینترنال استفاده کرد ؟



نظرات 3 + ارسال نظر
علی سه‌شنبه 6 تیر 1391 ساعت 01:50 ب.ظ

اینها رو کی خوندیم؟!!!!!

قرار ِ خودتون بخونید

محبوب سه‌شنبه 6 تیر 1391 ساعت 11:01 ب.ظ

باسلام
جواب تمرین دوم:
Class library را ایجاد کرده و در پروژه دیگر Add کردم. از property اینترنال نمی توان استفاده کردو فقط property هایی که public تعریف شده بود قابل دستیابی و استفاده هستند.
روش انجام کار:
برای ایجاد Class library مراحل زیر را انجام می دهیم:
1- New Project
2- یک پروژه از نوع Class library تعریف می کنیم.
بعد از باز شدن پروژه یک کلاس به اسم class1 می بینیم. می توانیم اسم این کلاس را تغییر داده و مثلاً simplecar بذاریم. بعد داخل کلاس می توانیم property هاو field و متدهای آن را تعریف کنیم.
چون فرصت نشد کلاس جدیدی تعریف کنم همان property و fieldو متدهای کلاس کار را تعریف کردم.
البته یک property دیگر به اسم number of doors اضافه شده.این بار برای هر property یک modifier تعریف کردم : مثلاً Model را public، Make را Internal و Mile را private و
numbers of doors را Internal private . هدفم این بود که دسترسی به تمامی انواع Modifierها را پس از Add کردن در پروژه دیگر تست کنم.
در پروژه دیگر مثلاً OopExample2 این فایل dll(پروژه Class library ایجاد شده ) را توسط AddReference ،Add کردم. ( از داخل تب Brows، فایل Add شد). در این مثال اسم فایل ماClassLibrarySample.dll است.( ClassLibrarySample; using هم در ابتدای Form1.cs مربوط به پروژهoop نوشتم) پس از ایجاد یک شی جدید :
simpleCar car8 = new simpleCar();
car8.Model = "benz";


وقتی car8. وارد میشود لیست property ها و متدهای قابل دستیابی لیست میشود که فقط Model که publicبود هست. و اگر
car8.Make

را وارد کنیم car8.Make زیرش خط قرمز میاد و میگه این property را در simplecar پیدا نمی کند.(همان پیغامی که در جلسات قبل برای Internal class نمایش می داد.)

محبوب بسیار عالی بود

یلدا چهارشنبه 7 تیر 1391 ساعت 12:58 ق.ظ

تمرین 1 : با 2 مثال تفاوت Value Type ها و Reference Type ها را نمایش دهید!
پیشنهاد : از int برای Value و از کلاس Form برای Reference ها استفاده کنید.

این موضوع مهم است که بدانیم آیا یک Type یک Value Typeاست یا Reference Type به دلیل اینک هر کدام تاثیر متفاوتی دارند

Value Typeها مانند int,float,boll,char هستند زمانی که یک نمونه ازآن ایجاد می شود فضایی در حافظه به آن اختصاص داده می شود. اما Reference Type ها مانند Class,delegate ,dynamic,object,string ابتدا یک شی در حافظه ایجاد شده و سپس از طریق یک reference (مانند اشاره گر) اداره می شوند.
این موضوع مخصوصاً زمانی که از توابع استفاده می کنیم نمود بیشتری پیدا می کند، چون فرستادن یک پارامتر Value Type به یک تابع به این معنی است که یک نمونه به صورت فیزیکی کپی شده و نمونه کپی شده کاملاً مستقل از نمونه اولیه خواهد بود در حالی که برای Reference Type یک Reference به تابع ارسال می شود که تقریباً هر تغییری روی آن باعث ایجاد تغییر در نمونه اولیه می شود
Value Type ها برعکس Reference Typeها نمی توانند از چیزی مشتق شوند .
Value Typeها در stack ذخیره میشوند Reference Typeها در heapذخیره میشوند.
اگر دقت کنید می بینید که اکثر تفاوت بین Struct و Class به دلیل Reference Type بودن کلاس و Value Type بودن استراکچر می باشد.
مثال:
int a = 2;
int b;
b = a;
b++;
MessageBox.Show("a= " + a + " b= " + b);
از آنجایی که int یک Value Type است پس a و b مستقل از یکدیگر هستند و درانتها a برابر2 وb برابر3 خواهد بود.
در مثال زیر Form از نوع Reference Type میباشد و درانتها نتیجه f1.Show(); فرمی را نشان می دهد که خاصیت Text آن برابر"فرم دوم" است در حالی که اگر دقت کنید می بینید که ما این خاصیت را برابر "فرم اول" قرار داده بودیم.
Form f1 = new Form() { Text = "فرم اول" };
Form f2 = new Form();
f2 = f1;
f2.Text = "فرم دوم";
f1.Show();

با عرض سلام و خسته نباشید

فقط یک مسئله هست، من با هر مثالی که می خواهم ثابت کنم که String یک Reference Type است ثابت می شود که Value Type است .
مگر اینکه به دلیل نوع حافظه آن Reference Type باشد.
میشه راهنمایی کنید؟؟؟
خیلی ممنون

یلدا خیلی خوب بود
ظاهرا از همین وبلاگ هم استفاده کردی برای جواب دادن که البته مشکلی هم نداره
در مورد رشته ها سر کلاس صحبت می کنیم

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد