PDA

View Full Version : سوال: تفاوت متغییر هایی از کلاس String با s کوچیک و S بزرگ در چیست



hasan_shakery
شنبه 03 مرداد 1388, 00:29 صبح
من تازه دارم کار کردن با سی شاپ رو آغار میکنم واسم یه سوال پیش اومده که در کد زیر


String S;
string s;دوتا متغییر S و s تعریف شده می خواستم بدونم فرق این دو تا متغییر در چیه ؟
همین قضیه برای نوع داده char و Char نیز مطرح است!

samirdev
شنبه 03 مرداد 1388, 03:01 صبح
برای درک بهتر فرق این دو نیاز به اطلاعاتی درباره ی پلتفرم دات نت هست . با این که نمی دانم اطلاعات شما در چه حد هست ولی توضیح میدم.

CTS Type ها :
تمام زبان هایی که از استاندارد دات نت پیروی می کنند از CTS Type ها استفاده می کنند . در واقع تایپ هایی که با حروف بزرگ آغاز شده اند در تمامی زبان های دات نت به همین نام ها شناخته شده هستند که برخی از آنها در زیر لیست شده:
System.String
System.Char
System.Int16
System.Int32
System.Int64
.
.
.


حال ممکن است در یک زبان خاص برای این تایپ ها نام دیگری هم انتخاب شود . برای مثال در سی شارپ int نام دیگر System.Int32 است که در VB.NET با Integer شناخته می شوند. در مثال شما هم String همان string است. در واقع string نامی است که سی شارپ برای String انتخاب کرده.

hasan_shakery
شنبه 03 مرداد 1388, 10:47 صبح
پس من می تونم از بحث شما نتیجه بگیرم در همه حالت ها String با s کوچیک و S بزرگ در سی شارپ یکسانه
و هیچ فرقی در مصرف حافظه بهینه تر ؟
یا نوع استفاده از حافظه ( heap یا stack ) نداره ؟
یا باعث افزایش یا کاهش سرعت اجرا نمیشه ؟

و فقط اگه با S بزرگ بنویسم باعث میشه اگه قرار برنامه من به دیگر زبان های Net. تبدیل بشه یک گام جلو تر هستم !

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

در ضمن به نظر شما چه دلیلی داشته اگه هیچ فرقی بین این دو نوع داده وجود نداره سی شاپ این کلاس رو با S کوچیک مجددا" تعریف کرده است ؟ میشه بگیم واسه راحتی برنامه نویس این کار کرده؟

samirdev
یک شنبه 04 مرداد 1388, 23:27 عصر
بله می توان نتیجه گرفت که یکسان هستند و باعث افزایش یا کاهش سرعت هم نمی شود.


و فقط اگه با S بزرگ بنویسم باعث میشه اگه قرار برنامه من به دیگر زبان های Net. تبدیل بشه یک گام جلو تر هستم !


در این مورد هم باید بگم فرقی نمی کند . ; در دات نت چیزی به اسم string وجود ندارد و دات نت فقط System.String را درک میکند. و string برای سی شارپ شناخته شده است . و در زمان کامپایل برنامه string ها به System.String تبدیل می شوند. پس باز هم هر دوی این ها یکی هستند. string یک alias برای System.String است.