PDA

View Full Version : کلاس String و نمونه سازی از آن



rezajam0395
جمعه 10 آذر 1402, 02:45 صبح
یه سوالی که هنگام یادگیری سی شارپ واسم پیش اومده اینه که اگه واسه استفاده از یک کلاس باید از اون کلاس یک شی ایجاد کرد یعنی ابتدا نمونه ای از اون کلاس باید ایجاد کرد تا بتونیم از فیلدها و متدها و... استفاده کنیم، پس چرا برای استفاده از رشته ها که در سی شارپ از نوع کلاس هستن میتوانم بدون نمونه سازی از آن استفاده کرد یعنی
"String str="reza
با اینکه string یه کلاس هستش چرا ازش نمونه سازی نکردیم مثلاً بجاش بنویسم
String str=new String ()

با اینکه نوع داده های int و float و byte و.. از نوع ساختار هستن و بدون نمونه سازی از کلاس میشه ازشون استفاده کرد ولی String یک رشته است

پرستو پارسایی
جمعه 10 آذر 1402, 08:15 صبح
در سی شارپ، رشته‌ها (string) به عنوان یک نوع داده پیش‌فرض تعریف شدند که خاصیت ویژه‌ای دارند. این نوع داده فقط یک استثناست و به صورت ویژه برای آن نیازی به ایجاد نمونه (شی) از کلاس ندارید.


بر خلاف سایر نوع داده‌ها مانند int، float و byte که از نوع ساختاری هستند و برای استفاده از آنها باید نمونه سازی (شی) ایجاد کنید، رشته‌ها به عنوان یک نوع مرجع (reference type) عمل می‌کنند. این یعنی شما می‌توانید بدون ایجاد نمونه از کلاس، مستقیماً از رشته‌ها استفاده کنید.


پس ، وقتی شما از رشته استفاده می‌کنید، نیازی به ایجاد نمونه جدید از کلاس String ندارید.


پس رشته‌ها به صورت پیش‌فرض در سی شارپ تعریف شدند، و شما می‌تونید بدون نیاز به نمونه سازی از کلاس String از فیلدها و متدهای مربوط به رشته‌ها استفاده کنید.

پرستو پارسایی
جمعه 10 آذر 1402, 08:21 صبح
امیدوام مفید واقع بشه

rezajam0395
جمعه 10 آذر 1402, 09:11 صبح
امیدوام مفید واقع بشه
ممنون و سپاسگزارم متوجه شدم

mmbguide
جمعه 10 آذر 1402, 11:45 صبح
سلام به دوستان

آیا جهت ایجاد یک کلاس سراسری میشه اون کلاس و ویژگی های اون را بصورت static ایجاد کنیم تا در برنامه نیازیبه نمونه سازی نباشه؟ البته مواردی رو هم دیدم که یک متد از نوع static مثلا با نام create میسازند که با فراخوانی این متد ضمن آنکه نیازی به نمونه سازی از کلاس نیست بلکه مقدار برگشتی این متد یک نمونه از کلاس هستش. آیا این روش درسته؟

ShayanFiroozi
جمعه 10 آذر 1402, 14:56 عصر
سلام ،

بله این روش درسته و به الگوی Builder معروفه ،

البته اینکه شما کلاس رو استاتیک تعریف کنین بستگی به سناریو داره ، باید دقت داشته باشین کلاس های استاتیک موقع اجرای برنامه به صورت اتوماتیک نمونه سازی میشن و این موضوع در میزان استفاده از حافظه میتونه مشکل ساز باشه.