آموزش سیشارپ C# – بخش ۹
- مقدمه
در بخش پیشین از آموزش زبان شیرین سیشارپ، شما با متغیر رشته (String) آشنا شدید و توانستید که یک پروژهای هرچند کوچک، اما جذاب بنویسید. در این بخش شما با دو موضوع بسیار ساده – اما مهم – آشنا خواهید شد؛ اتصال دو رشته در کنار هم و نحوهی کامنتگذاری.
- اتصال دو رشته
یکی از مواردی که در سیشارپ میتوانید انجام دهید، الحاق (اتصال) دو رشته در کنار هم میباشد. شما میتوانید یک رشتهی مستقیم را به یک متغیر رشتهای الحاق کنید؛ یا دو رشتهی مستقیم را به هم الحاق کنید؛ یا دو متغیر رشتهای را با یکدیگر الحاق کنید. یک نمونهکد میتواند تمام این موارد را بطور واضح برای شما روشن کند.
پروژهی قبلی خود را باز کنید؛ شما یک متغیر با نام firstName داشتهاید. یک متغیر جدید از نوع رشته بسازید و نام آن را messageText قرار دهید. اینطور:
string messageText;
ما میخواهیم در متغیر messageText یک رشته بهصورت دستی وارد کنیم و در درون آن ذخیره کنیم. پس طبق روال، اینطور مینویسیم:
messageText = “Your name is: “;
کد شما به شکل زیر خواهد شد:
کاری که ما میخواهیم از این اعمال انجام دهیم، این است که با کلیک بر روی button مورد نظر، متنی بهشکل زیر بنویسد:
Your name is John.
متغیری که هماکنون تعریف کردیم، بخش اول پیام بالا را کنترل خواهد کرد؛ یعنی Your name is. و در انتها ما نام فرد را توسط جعبه متنی که از قبل قرار دادهایم خواهیم گرفت – توسط کد زیر که از قبل نوشتهایم:
firstName = textBox1.Text;
نام فرد در متغیر firstName ذخیره خواهد شد. پس برای اینکه این دو رشته را با یکدیگر الحاق کنیم، فقط و فقط کافیست که از علامت جمع (+) استفاده کنیم؛ یعنی:
messageText + firstName
اکنون بهجای firstName تنها در داخل پرانتز در متد MessageBox.Show()، ما میتوانیم کد بالا را قرار دهیم؛ بدین صورت که:
MessageBox.Show(messageText + firstName);
کدهای شما باید اینگونه شده باشد:
برنامه خود را اجرا کنید؛ نام خود را در جعبه متن وارد کنید و بر روی Get Text Box Data کلیک کنید. شما باید چیزی شبیه به این ببینید:
تبریک میگویم! شاید یک کاری سادهای بود، اما قطعاً همین علامت جمع (+)، خود یکی از موارد بسیار مهم در برنامهنویسی میباشد.
کاری که ما اینجا کردیم این بود که یک متغیر جدید تعریف کردیم که یک رشتهی مستقیم را در خود ذخیره کند (یعنی Your name is) و یک متغیر نیز از قبل داشتیم که نام فرد را بگیرد؛ سپس این دو متغیر را با هم الحاق کردیم.
تمرین: سعی کنید که شما بدون استفاده از متغیر messageText، دقیقاً پروژهی بالا را پیادهسازی کنید.
- کامنتگذاری در سیشارپ
شما مجبور نیستید که نمایش اسم افراد را در یک Message Box نمایش دهید! شما میتوانید همینکارها را با استفاده از یک Label ساده انجام دهید.
با استفاده از Tool Box، یک Label جدید اضافه کنید. Properties مربوط به Label جدید خود را بدین شکل قرار دهید:
Name: TextMessage
Location: ۸۷, ۱۲۶
Text: Message Area
به پنجره کدهای خود برگردید. دوتا خط مورب (Slash) پشت آخرین خط از کد شما، یعنی MessageBox.Show() اضافه کنید. به شکل زیر دقت کنید:
علت اینکه این خط از کد شما بعد از قرار دادن Slashها به رنگ سبز تبدیل شد، این است که به این اتفاق کامنتگذاری میگویند. شما تقریباً در تمامی زبانهای برنامهنویسی چنین چیزی را خواهید داشت.
کامنت به این معنیاست که سیشارپ این بخش از کدهای شما را نادیده خواهد گرفت و از آنها رد خواهد شد. فایدهی کامنت گذاشتن برای این است که هنگامی که شما یک پروژهای را مینویسید، شاید بعد از یک ماه با دیدن کدهای آن، خیلی از دلایل کارهایتان را فراموش کنید. البته به این پروژههای کوچک دقت نکنید؛ شما در آینده برنامههایی را خواهید نوشت که ۱۰ها هزار خط کد خواهد داشت و با یک دید نخواهید توانست عملیات کدها را بهیاد آورید.
شما میبایست از همین اول که در ابتدای راه هستید، به خودتان عادت دهید که در تمامی برنامهها، هرچقدر هم کوچک باشند، کامنتگذاری کنید. پس ما هم چنین خواهیم کرد:
اکنون که شما آخرین خط از کدتان را به یک کامنت تبدیل کردهاید، این کد دیگر اجرا نخواهد شد؛ یعنی دیگر با کلیک بر روی button، جعبهپیغام برای شما نمایش داده نخواهد شد. اینبار با استفاده از Label که تازه اضافه کردهایم، نام خودمان را بر روی آن چاپ خواهیم کرد. پس خط زیر را اضافه کنید:
TextMessage.Text = messageText + firstName;
فکر میکنم که کد بالا کاملاً برای شما آشنا باشد. این کد میگوید که یک شیء با نام TextMessage وجود دارد (که همان Label است) که میخواهیم مقدار Text آن، برابر باشد با الحاق دو رشتهی messageText و firstName.مجدداً نرمافزار خود را اجرا کنید. نام خود را وارد کنید؛ چنین خواهد شد:
خواهید دید که خیلی ساده شما توانستهاید بهجای استفاده از یک Message Box، از یک Label استفاده کنید و نام خودتان را بر روی آن چاپ کنید. اکنون تمرین زیر را سعی کنید خودتان حل کنید:
تمرین: اینبار علاوه بر Label، یک Text Box جدید اضافه کنید و سعی کنید که نامتان همراه با الحاق دو رشته در یک جعبهمتن نمایش داده شود؛ چیزی شبیه به شکل زیر:
جهت دریافت فایل PDF این بخش آموزشی، اینجا را کلیک کنید.
اشتباها کامنتمو زیر پست وارد شدن گوشی هووایی به بازار ایران گذاشتم!
بسیار عالی و پربار
تمرین اول:
MessageBox.Show(“Your name is: ” + firstname);
تمرین دوم:
firstname = textBox1.Text;
messageText = “Your name is: “;
TextMessage.Text = messageText + firstname;
textBox2.Text = messageText + firstname;
در نهایت یک پیشنهاد.
بنظرتون بهتر نیست که برای سهولت توی پیدا کردن آیتمها از حروف مخففشون برای نامگذاری استفادی کنیم؟ مثلا مقدار Name رو برای Textbox معادل txt و برای لیبل معادل lbl و امثالهم رار بدیم؟ اینجوری توی قسمت کدها تا اسم یک آیتم رو میبینیم براحتی میتونیم متوجه بشیم که نوعش چیه.
دوست عزیزم سلام،
خیلی ممنونم از لطف شما که پاسخ تمرینات رو قرار دادید؛ سپاسگذارم.
در رابطه با نامگذاری object ها در سیشارپ حرف شما کاملاً منطقی و درست هست و افراد حرفهای که با زبانهایی شبیه به سیشارپ برنامهنویسی میکنند، دقیقاً از همین روش برای نامگذاری اشیاء استفاده میکنند. من در ادامه هم اینکار را خواهم کرد و چونکه فعلاً تنها شروع راه است و قصد گیج کردن را ندارم، اینکار را میکنم.
من مجدداً از شما سپاسگذاری میکنم.
موفق باشید!
TextMessage.Text
کد رو میزنم lable رو هم به فرمم اضافه کردم اما ارور میده میگه TextMessage.Text وجود نداره
سلام دوست عزیزم،
اگرچه من دقیقاً متوجه مشکلتون نشدم، اما شما اول از همه یکبار دقیق مثل آموزش پیش برید و جلوتر یا عقبتر نباشید. بعداً اینکه دقت کنید که قبل از ابنکه کدی رو بزنید، باید اول اون شیء رو اضافه کنید و بعدش کد رو بزنید.
موفق باشید!
طبق آموزش هم انجام دادم نشد!!
من lable رو به فرم اضافه کردم بعدش در قسمت کدنویسی button وقتی این کد رو میزنم TextMessage.Text ارور میده و نمیشناسه این شی رو
خوب شما از Properties مقدار Name رو تغییر دادید؟ حروف بزرگ و کوچک انگلیسی تأثیر داره، دقت کنید!
سرانجام توانستم !!! 😀
string fname;
string lname;
string messagetext;
messagetext = “your name is : “;
fname = textBox1.Text;
lname = textBox2.Text;
//MessageBox.Show(messagetext + fname + lname);
TextMessage2.Text = messagetext + lname + fname;
واسه منم textmessage ارور میده میگه وجود نداره. آخه label که می ذاریم textmessage از کجا میاد؟
درست شد. دیگه ارور نمیده.
مرسی از آموزشتون.
لازمه که کلاس بریم. توی کلاسم همینارو میگن؟/
سلام دوست عزیزم،
برای شروع شما هر کلاسی رو که برید معمولاً همین مباحث (شاید یکی زودتر و یکی قبلتر) گفته میشه.
اما در سطوح حرفهای، هر کلاسی مباحث مربوط به خودش رو ارائه میده.
موفق باشید!
سلام خسته نباشی
ببخشید یه سوال داشتم
من سی پلاس پلاس قبلا خونده بودم یکم
می خواستم ببینم متدهایی که اینجایی میگی همون تابعه دیگه؟
یا من بد فهمیدم؟
سلام دوست عزیزم،
بله، ما توی زبان C اصطلاح Function را داریم و در اینجا به آنها Method میگوییم.
موفق باشید!
بسیار ممنون
سلام من روز اولمه وارد فراگیری c# شدم
در مورد تمرین ها اگر بیشتر بهم توضیح بدی ممنون میشم عزیزم
سلام دوست عزیز،
سوالات هر بخش رو در بخش نظرات مورد نظرتون مطرح نمایید، ما تمام سعیمان را خواهیم کرد که به سوالاتتان پاسخ دهیم.
موفق باشید.
با سلام و خسته نباشی از ساییت خوبتون
من قبل از این که دو رشته رو الحاق کنم درست اجرا میشد و مقدار textbox1 رو نمایش میداد
اما بعد از اینکه متغیر messagetextر رو تو messagebox الحاق کردم بازم فقط مقدار text رو نمایش میده
لطفا مشکلش رو سریع بگید
ممنون میشم
با سلام!
به نظرتون بهتر نیست به جای چهار خط اول این رو قرار بدیم؟
string firstname;
firstname = “your name is ” +textBox1.Text;
از همین الان کد هامو ن بهینه باشه؟(البته شما استاد مایی)