👋 سلام رفقا! خوش اومدین به کانال C# Geeks
اینجا قراره از صفرِ صفر، قدمبهقدم با هم #C یاد بگیریم. هم چیزای پایه رو یاد میگیریم که همه بتونن راحت وارد دنیای برنامهنویسی بشن، هم یواشیواش میریم سراغ مباحث پیشرفتهتر و خفنتر! 🔥
📚 هدفمون اینه که نه فقط آموزش خشک بدیم، بلکه نکات کاربردی، سوالات واقعی و تجربههای باحال رو هم با هم به اشتراک بذاریم. هرچی جلوتر بریم، مباحث جذابتر و چالشبرانگیزتر میشه!
💬 پس هر سوال، ابهام یا تجربهای که داری رو بپرس و با ما درمیون بذار. با هم میریم جلو و قویتر میشیم!
📌 منتظر اولین پست آموزشی باش 😉
اینجا قراره از صفرِ صفر، قدمبهقدم با هم #C یاد بگیریم. هم چیزای پایه رو یاد میگیریم که همه بتونن راحت وارد دنیای برنامهنویسی بشن، هم یواشیواش میریم سراغ مباحث پیشرفتهتر و خفنتر! 🔥
📚 هدفمون اینه که نه فقط آموزش خشک بدیم، بلکه نکات کاربردی، سوالات واقعی و تجربههای باحال رو هم با هم به اشتراک بذاریم. هرچی جلوتر بریم، مباحث جذابتر و چالشبرانگیزتر میشه!
💬 پس هر سوال، ابهام یا تجربهای که داری رو بپرس و با ما درمیون بذار. با هم میریم جلو و قویتر میشیم!
📌 منتظر اولین پست آموزشی باش 😉
🔖 هشتگها : #CSharpGeeks
string channel = "CSharpGeeks";
💻 سی شارپ (#C) چیه؟
سی شارپ یه زبان برنامهنویسی مدرن، چندمنظوره و شیگراست که توسط شرکت مایکروسافت ساخته شده. این زبان سال ۲۰۰۰ توسط «آندرس هلسبرگ» (Anders Hejlsberg) و تیم خفنشون معرفی شد تا توسعهدهندهها بتونن باهاش نرمافزارهای قدرتمند و مقیاسپذیر برای پلتفرمهای مختلف بسازن.
🌍 حوزههای کاربردی #C
🎮 بازیسازی: ساخت بازیهای 2D، 3D و حتی واقعیت افزوده و واقعیت مجازی با موتور قدرتمند Unity
🌐 وب: توسعه سایتها و اپلیکیشنهای وب سریع و حرفهای با ASP.NET Core
🖥 دسکتاپ: ساخت اپلیکیشنهای دسکتاپ با Windows Forms و WPF (برای ویندوز)
📱 موبایل کراسپلتفرم: توسعه اپهای اندروید و iOS با Xamarin و حالا MAUI
☁️ کلود (ابر): ساخت اپلیکیشنهای ابری و سرویسهای مقیاسپذیر با Azure
🤖 هوش مصنوعی و یادگیری ماشین: استفاده از ML.NET برای پیادهسازی مدلهای یادگیری ماشین
🔌 اینترنت اشیا (IoT): کنترل و اتصال به دستگاههای هوشمند با سی شارپ
🔗میکروسرویسها و API : توسعه وب API ها و سرویسهای تحت وب سریع و مقیاسپذیر
سی شارپ یه زبان برنامهنویسی مدرن، چندمنظوره و شیگراست که توسط شرکت مایکروسافت ساخته شده. این زبان سال ۲۰۰۰ توسط «آندرس هلسبرگ» (Anders Hejlsberg) و تیم خفنشون معرفی شد تا توسعهدهندهها بتونن باهاش نرمافزارهای قدرتمند و مقیاسپذیر برای پلتفرمهای مختلف بسازن.
🌍 حوزههای کاربردی #C
🎮 بازیسازی: ساخت بازیهای 2D، 3D و حتی واقعیت افزوده و واقعیت مجازی با موتور قدرتمند Unity
🌐 وب: توسعه سایتها و اپلیکیشنهای وب سریع و حرفهای با ASP.NET Core
🖥 دسکتاپ: ساخت اپلیکیشنهای دسکتاپ با Windows Forms و WPF (برای ویندوز)
📱 موبایل کراسپلتفرم: توسعه اپهای اندروید و iOS با Xamarin و حالا MAUI
☁️ کلود (ابر): ساخت اپلیکیشنهای ابری و سرویسهای مقیاسپذیر با Azure
🤖 هوش مصنوعی و یادگیری ماشین: استفاده از ML.NET برای پیادهسازی مدلهای یادگیری ماشین
🔌 اینترنت اشیا (IoT): کنترل و اتصال به دستگاههای هوشمند با سی شارپ
🔗میکروسرویسها و API : توسعه وب API ها و سرویسهای تحت وب سریع و مقیاسپذیر
🔖 هشتگها : #سی_شارپ_چیست
string channel = "CSharpGeeks" ;
💻 اولین برنامه (C# - A First C# Program)
سلام رفقا! تو این پست میخوایم اولین برنامه ساده #C رو بررسی کنیم.این برنامه از دو خط ساده تشکیل شده:
عبارت 12 * 30 محاسبه میشه و نتیجهاش (360) داخل متغیر x از نوع int (عدد صحیح 32 بیتی) ذخیره میشه.
متد WriteLine از کلاس Console (که داخل فضای نام System هست) مقدار x رو توی پنجره کنسول چاپ میکنه.
سلام رفقا! تو این پست میخوایم اولین برنامه ساده #C رو بررسی کنیم.این برنامه از دو خط ساده تشکیل شده:
int x = 12 * 30; // Statement 1
System.Console.WriteLine(x); // Statement 2
Statement 1
عبارت 12 * 30 محاسبه میشه و نتیجهاش (360) داخل متغیر x از نوع int (عدد صحیح 32 بیتی) ذخیره میشه.
Statement 2
متد WriteLine از کلاس Console (که داخل فضای نام System هست) مقدار x رو توی پنجره کنسول چاپ میکنه.
📚 ساختار کلی برنامه #C
کدها توی #C به صورت بیانها (Statements) نوشته میشن که با ; تموم میشن.
متدها مثل WriteLine توابعی هستن که داخل کلاسها قرار دارن. کلاسها هم کدها و دادهها رو دستهبندی میکنن.
کلاس Console مخصوص کار با ورودی و خروجی خط فرمانه و تو فضای نام System قرار داره.
🌐 فضاهای نام (Namespace)
فضای نام System شامل کلاسهای پایه مثل Console هست.
استفاده از System.Console تو هر بار صدا زدن میتونه خستهکننده باشه. برای همین میتونیم بالای کد این خط رو اضافه کنیم:
و بعدش سادهتر بنویسیم:
کدها توی #C به صورت بیانها (Statements) نوشته میشن که با ; تموم میشن.
متدها مثل WriteLine توابعی هستن که داخل کلاسها قرار دارن. کلاسها هم کدها و دادهها رو دستهبندی میکنن.
کلاس Console مخصوص کار با ورودی و خروجی خط فرمانه و تو فضای نام System قرار داره.
🌐 فضاهای نام (Namespace)
فضای نام System شامل کلاسهای پایه مثل Console هست.
استفاده از System.Console تو هر بار صدا زدن میتونه خستهکننده باشه. برای همین میتونیم بالای کد این خط رو اضافه کنیم:
using System;
و بعدش سادهتر بنویسیم:
Console.WriteLine(x);
🧱 بازنویسی برنامه با متد شخصی:
میتونیم کد رو حرفهایتر کنیم و یه متد بنویسیم که این محاسبه رو انجام بده:
✅ این متد FeetToInches یه ورودی میگیره و خروجی برمیگردونه. ورودی اسمش feet و خروجی هم تعداد اینچهاست.
میتونیم کد رو حرفهایتر کنیم و یه متد بنویسیم که این محاسبه رو انجام بده:
using System;
Console.WriteLine(FeetToInches(30)); // 360
Console.WriteLine(FeetToInches(100)); // 1200
int FeetToInches(int feet)
{
int inches = feet * 12;
return inches;
}
✅ این متد FeetToInches یه ورودی میگیره و خروجی برمیگردونه. ورودی اسمش feet و خروجی هم تعداد اینچهاست.
😎بدون ورودی و خروجی؟ مشکلی نیست!
مثلاً این مثال ساده:
مثلاً این مثال ساده:
using System;
SayHello();
void SayHello()
{
Console.WriteLine("Hello, world");
}
دستور ساخت پروژه کنسول جدید:
برای اجرای برنامه از پوشه پروژه:
یا فقط کامپایل بدون اجرا:
💬 نگران نباش! اگه الان چیزی از این کدها نفهمیدی اصلاً اشکال نداره! 😎 چون تو پستهای بعدی، دونه دونه همهی این بخشها رو بهزبون ساده توضیح میدیم و با مثالهای بیشتر یاد میگیری.
dotnet new console -n ProgramName
برای اجرای برنامه از پوشه پروژه:
dotnet run ProgramName
یا فقط کامپایل بدون اجرا:
dotnet build ProgramName
.csproj
💬 نگران نباش! اگه الان چیزی از این کدها نفهمیدی اصلاً اشکال نداره! 😎 چون تو پستهای بعدی، دونه دونه همهی این بخشها رو بهزبون ساده توضیح میدیم و با مثالهای بیشتر یاد میگیری.
🔖 هشتگها :
#اولین_برنامه
#CSharp_پایه
#برنامه_نویسی
🚀 ساختار زبان برنامه نویسی (Syntax) در #C :
سلام به همه گیکهای #C 🤓 تا حالا به این فکر کردید که چطور زبان #C کدهای ما رو میفهمه و اجرا میکنه؟ همه چیز برمیگرده به Syntax!
در این پست، میخوایم عناصر اساسی سینتکس #C رو بررسی کنیم که از C و ++C الهام گرفته.
بیاین با این تکه کد ساده شروع کنیم:
این چند خط، دنیایی از مفاهیم سینتکسی رو در خودشون جا دادن!
سلام به همه گیکهای #C 🤓 تا حالا به این فکر کردید که چطور زبان #C کدهای ما رو میفهمه و اجرا میکنه؟ همه چیز برمیگرده به Syntax!
در این پست، میخوایم عناصر اساسی سینتکس #C رو بررسی کنیم که از C و ++C الهام گرفته.
بیاین با این تکه کد ساده شروع کنیم:
using System;
int x = 12 * 30;
Console.WriteLine (x);
این چند خط، دنیایی از مفاهیم سینتکسی رو در خودشون جا دادن!
--شناسهها(Identifiers):
نامهایی هستند که ما برنامهنویسها انتخاب میکنیم. مثلاً در کد بالا، System، x، Console و WriteLine همگی شناسه هستند.
-- قواعد مهم: به بزرگی و کوچکی حروف حساساند (case-sensitive).
--کنوانسیون نامگذاری:
برای پارامترها، متغیرهای محلی و فیلدهای خصوصی.
برای بقیه شناسهها (کلاسها، متدها، Propertyها).
--کلمات کلیدی(Keywords):
واژههایی هستند که برای کامپایلر معنی خاص و از پیش تعریف شدهای دارن. در مثال ما، using و int کلمات کلیدی هستند.
--کلمات کلیدی رزرو شده: بیشتر کلمات کلیدی #C رزرو شدهاند و نمیتوانید از آنها به عنوان شناسهی معمولی استفاده کنید. (مثل class, public, if, for و ...).
کلمات کلیدی متنی(Contextual Keywords):
یک سری کلمات کلیدی هستند که در برخی زمینهها معنی خاصی دارند ولی میتوانید از آنها به عنوان شناسه هم استفاده کنید، چون ابهامی ایجاد نمیکنند (مثل var, async, await, yield).
نامهایی هستند که ما برنامهنویسها انتخاب میکنیم. مثلاً در کد بالا، System، x، Console و WriteLine همگی شناسه هستند.
-- قواعد مهم: به بزرگی و کوچکی حروف حساساند (case-sensitive).
--کنوانسیون نامگذاری:
Camel Case (myLocalVariable)
برای پارامترها، متغیرهای محلی و فیلدهای خصوصی.
Pascal Case (MyLocakMethod)
برای بقیه شناسهها (کلاسها، متدها، Propertyها).
--کلمات کلیدی(Keywords):
واژههایی هستند که برای کامپایلر معنی خاص و از پیش تعریف شدهای دارن. در مثال ما، using و int کلمات کلیدی هستند.
--کلمات کلیدی رزرو شده: بیشتر کلمات کلیدی #C رزرو شدهاند و نمیتوانید از آنها به عنوان شناسهی معمولی استفاده کنید. (مثل class, public, if, for و ...).
نکته باحال : اگر واقعاً مجبور شدید، میتوانید با قرار دادن @ قبل از کلمه کلیدی، از آن به عنوان شناسه استفاده کنید:
int @using = 123;
کلمات کلیدی متنی(Contextual Keywords):
یک سری کلمات کلیدی هستند که در برخی زمینهها معنی خاصی دارند ولی میتوانید از آنها به عنوان شناسه هم استفاده کنید، چون ابهامی ایجاد نمیکنند (مثل var, async, await, yield).
--لیترالها(Literals):
دادههای خام و ثابتی که مستقیماً در کد وارد میکنیم. در مثال بالا، 12 و 30 لیترالهای عددی هستند.
--علامتهای نگارشی(Punctuators):
به ساختار و خوانایی کد کمک میکنند. بارزترین مثال، سمیکالن (;) است که یک دستور رو به پایان میرسونه.
--عملگرها (Operators):
عملیات خاصی روی مقادیر(Operands) انجام میدن. در کد مثال ما، این عملگرها رو داریم:
دادههای خام و ثابتی که مستقیماً در کد وارد میکنیم. در مثال بالا، 12 و 30 لیترالهای عددی هستند.
--علامتهای نگارشی(Punctuators):
به ساختار و خوانایی کد کمک میکنند. بارزترین مثال، سمیکالن (;) است که یک دستور رو به پایان میرسونه.
--عملگرها (Operators):
عملیات خاصی روی مقادیر(Operands) انجام میدن. در کد مثال ما، این عملگرها رو داریم:
= : عملگر انتساب (Assignment) که یک مقدار رو به یک متغیر اختصاص میده.
* : عملگر ضرب (Multiplication).
. : عملگر عضو (Member Access) برای دسترسی به اعضای یک کلاس یا شیء (مثل Console.WriteLine).
() : پرانتزها که برای فراخوانی متدها استفاده میشن. اگه متدی آرگومان نگیره، پرانتزها خالی میمونن.
🔖 هشتگها : #Syntax
📝 کامنتگذاری در #C:
سلام به گیکهای منظم و آیندهنگر!🧑💻
وقتی داریم کد مینویسیم، ممکنه یه جاهایی نیاز داشته باشیم توضیحاتی برای خودمون یا همتیمیهامون بذاریم. اینجاست که کامنتها (Comments) وارد عمل میشن! کامنتها خطوطی از کد هستن که کامپایلر #C اصلاً بهشون کاری نداره و فقط برای ما برنامهنویسها معنی دارن تا کد رو بهتر درک کنیم.
سی شارپ دو مدل کامنتگذاری اصلی و پرکاربرد داره که بهمون کمک میکنه کدمون همیشه خوانا و قابل فهم باشه:
سلام به گیکهای منظم و آیندهنگر!🧑💻
وقتی داریم کد مینویسیم، ممکنه یه جاهایی نیاز داشته باشیم توضیحاتی برای خودمون یا همتیمیهامون بذاریم. اینجاست که کامنتها (Comments) وارد عمل میشن! کامنتها خطوطی از کد هستن که کامپایلر #C اصلاً بهشون کاری نداره و فقط برای ما برنامهنویسها معنی دارن تا کد رو بهتر درک کنیم.
سی شارپ دو مدل کامنتگذاری اصلی و پرکاربرد داره که بهمون کمک میکنه کدمون همیشه خوانا و قابل فهم باشه:
1️⃣ کامنتهای تکخطی:
کاربرد: بهترین گزینه برای توضیح یک خط کد
خاص، یا ارائه یک نکته کوتاه و مختصر.
نحوه استفاده: با دو تا اسلش رو به جلو (//) شروع میشه و تا پایان همون خط ادامه پیدا میکنه.
مثال کاربردی:
این کامنتها برای وقتی که میخواید سریعاً یه توضیح کوچیک کنار کدتون بنویسید، فوقالعادهان!
(Single-Line Comments) //
کاربرد: بهترین گزینه برای توضیح یک خط کد
خاص، یا ارائه یک نکته کوتاه و مختصر.
نحوه استفاده: با دو تا اسلش رو به جلو (//) شروع میشه و تا پایان همون خط ادامه پیدا میکنه.
مثال کاربردی:
int counter = 0; // This is a Comment
این کامنتها برای وقتی که میخواید سریعاً یه توضیح کوچیک کنار کدتون بنویسید، فوقالعادهان!
2️⃣ کامنتهای چندخطی:
کاربرد: ایدهآل برای توضیحات طولانیتر، شرح دادن یک بلوک کد بزرگ، یا حتی غیرفعال کردن موقتی چند خط کد.
نحوه استفاده: با /* شروع میشه و با */ به پایان میرسه و میتونه شامل چندین خط باشه.
مثال کاربردیتر:
این کامنتها زمانی به کار میان که نیاز به توضیح عمیقتر یا خلاصهای از عملکرد یک بخش بزرگتر از کد دارید.
(Multiline Comments) /* ... */
کاربرد: ایدهآل برای توضیحات طولانیتر، شرح دادن یک بلوک کد بزرگ، یا حتی غیرفعال کردن موقتی چند خط کد.
نحوه استفاده: با /* شروع میشه و با */ به پایان میرسه و میتونه شامل چندین خط باشه.
مثال کاربردیتر:
/*
این بخش از کد مسئول محاسبه
مجموع اعداد ۱ تا ۱۰ است.
از یک حلقه for برای این کار استفاده شده.
*/
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum += i;
}
این کامنتها زمانی به کار میان که نیاز به توضیح عمیقتر یا خلاصهای از عملکرد یک بخش بزرگتر از کد دارید.
💡نکته حرفهای:
کامنتگذاری هوشمندانه، نه تنها کد شما رو برای بقیه (و خودتون در آینده!) مثل روز روشن میکنه، بلکه یک مستندسازی داخلی ارزشمند برای پروژههای بزرگ محسوب میشه. سعی کنید کامنتها رو همیشه بهروز نگه دارید و از کامنتهای تکراری و بیفایده پرهیز کنید.
کامنتگذاری هوشمندانه، نه تنها کد شما رو برای بقیه (و خودتون در آینده!) مثل روز روشن میکنه، بلکه یک مستندسازی داخلی ارزشمند برای پروژههای بزرگ محسوب میشه. سعی کنید کامنتها رو همیشه بهروز نگه دارید و از کامنتهای تکراری و بیفایده پرهیز کنید.
🔖 هشتگها : #Comments
💎 فوت و فن انواع داده (Types) در #C :
از صفر تا کلاسهای سفارشی
هر برنامهنویس کاردرستی میدونه که برای نوشتن کدهای قدرتمند و تمیز، اول باید به مفهوم «انواع داده» (Types) مسلط شد. این مفهوم، مثل DNA برای دادههای ما عمل میکنه.
فکر کنید هر Type، شناسنامهی یه مقداره. این شناسنامه به #C میگه که این داده دقیقاً چیه، چه چیزایی تو خودش نگه میداره و چه کارایی از دستش برمیاد.
مثلاً، متغیر (Variable) رو داریم که مثل یه گاوصندوقه؛ هر لحظه میتونیم یه مقدار جدید توش بذاریم. در مقابل، ثابت (Constant) مثل یه سنگنوشتهست؛ یه بار که تعریف شد، تا ابد همون باقی میمونه!
نکته طلایی: 💡 در #C، هیچ مقداری بیهویت نیست. هر مقدار یک Type دارد که شخصیت و رفتارش را شکل میدهد.
از صفر تا کلاسهای سفارشی
هر برنامهنویس کاردرستی میدونه که برای نوشتن کدهای قدرتمند و تمیز، اول باید به مفهوم «انواع داده» (Types) مسلط شد. این مفهوم، مثل DNA برای دادههای ما عمل میکنه.
فکر کنید هر Type، شناسنامهی یه مقداره. این شناسنامه به #C میگه که این داده دقیقاً چیه، چه چیزایی تو خودش نگه میداره و چه کارایی از دستش برمیاد.
مثلاً، متغیر (Variable) رو داریم که مثل یه گاوصندوقه؛ هر لحظه میتونیم یه مقدار جدید توش بذاریم. در مقابل، ثابت (Constant) مثل یه سنگنوشتهست؛ یه بار که تعریف شد، تا ابد همون باقی میمونه!
// 'x' یه متغیر از نوع int است.
int x = 12 * 30;
Console.WriteLine(x); // 360
// 'y' یک ثابت است که مقدارش غیرقابل تغییره.
const int y = 360;
نکته طلایی: 💡 در #C، هیچ مقداری بیهویت نیست. هر مقدار یک Type دارد که شخصیت و رفتارش را شکل میدهد.
🧰 ابزارهای آماده در جعبهابزار #C :
سیشارپ یه سری Type آماده و پرکاربرد رو از اول در اختیارمون گذاشته که آچار فرانسهی ما هستن. این سه تا از مهمترینهاشونن:
نماینده اعداد صحیح. هرجا به محاسبات، شمارندهها یا هر نوع عملیات ریاضی نیاز دارید، int اولین و بهترین انتخاب شماست.
برای نمایش و دستکاری هر نوع داده متنی، از نام کاربری گرفته تا یک پیام طولانی. قدرت واقعی string در متدهای بینظیرشه.
این نوع فقط دو حالت میشناسه: true یا false. تمام تصمیمهای پیچیده برنامه، از بررسی اجازه دسترسی گرفته تا فعال یا غیرفعال کردن یک ویژگی، زیر سر همین bool هست.
سیشارپ یه سری Type آماده و پرکاربرد رو از اول در اختیارمون گذاشته که آچار فرانسهی ما هستن. این سه تا از مهمترینهاشونن:
int: سلطان اعداد
نماینده اعداد صحیح. هرجا به محاسبات، شمارندهها یا هر نوع عملیات ریاضی نیاز دارید، int اولین و بهترین انتخاب شماست.
int soldItems = 99;
int stock = 1000 - soldItems;
string: استاد کار با متن
برای نمایش و دستکاری هر نوع داده متنی، از نام کاربری گرفته تا یک پیام طولانی. قدرت واقعی string در متدهای بینظیرشه.
string rawEmail = " TestUser@example.com ";
// فضای خالی رو حذف و همه رو به حروف کوچک تبدیل میکنه
string cleanEmail = rawEmail.Trim().ToLower();
Console.WriteLine(cleanEmail); // testuser@example.com
bool: فرماندهی منطق برنامه
این نوع فقط دو حالت میشناسه: true یا false. تمام تصمیمهای پیچیده برنامه، از بررسی اجازه دسترسی گرفته تا فعال یا غیرفعال کردن یک ویژگی، زیر سر همین bool هست.
bool hasPermission = true;
if (hasPermission)
{
Console.WriteLine("Access Granted");
}