C#
مقدمه
در این فاز با زبان #C آشنا میشوید. همچنین چند برنامۀ ساده با این زبان مینویسید.
نصب پیشنیازها
در قدم اول برای کار با زبان #C پیشنهاد میکنیم از VS Code استفاده کنید تا با Net CLI. بهتر آشنا شوید. برای نوشتن کد به زبان #C در VS Code
مراحل زیر را طی کنید:
- نصب NET SDK.
- نصب اکستنشن #C
پس از نصب موارد بالا دستور
dotnet --info
را در ترمینال اجرا کنید تا نسخههای
Net.
نصب شده را مشاهده کنید.
برای کار با ترمینال نسخه جدید ترمینال ویندوز را نیز نصب کنید.
آشنایی با مبانی زبان #C
بهتر است ابتدا با Solution و Project در زبان #C آشنا شوید که برای درک این مفاهیم ?What is a C# solution and how to use it را مطالعه کنید؛ سپس در صورتی که با زبان Java آشنایی دارید C# Crash Course for Java Developers را مطالعه بفرمایید. در غیر این صورت از w3schools جهت یادگیری مبانی #C استفاده کنید.
اولین برنامه
ابتدا VS Code را باز کنید و یک پوشه انتخاب کنید. سپس در ترمینال، برای ایجاد یک Console App دستور زیر را اجرا کنید:
dotnet new console
برای باز کردن ترمینال در محیط
VS Code
میتوانید از میانبر
ctrl + ` (backtick)
استفاده کنید.
پس از اجرای دستور بالا چند فایل و یک پوشه ساخته میشوند. اگر فایل
Program.cs
را باز کنید، مشاهده میکنید که یک کد سادهی چاپ
Hello world
در آن نوشته شده است. برای اجرای این برنامه درون ترمینال دستور زیر را اجرا کنید:
dotnet run
با اجرای دستور بالا باید عبارت زیر در ترمینال چاپ شود:
Hello World
NuGet
توسعهدهندگان برای اشتراک گذاشتن و دریافت کدهای به اشتراک گذاشته شده از ابزارهایی تحت عنوان Package Manager استفاده میکنند. در پلتفرم Net. از NuGet استفاده میشود. NuGet کدها را در قالب فایلهای ی (Packageهایی) با پسوند nupkg. نگهداری میکند. این فایل یک فایل zip حاوی کدهای کامپایل شده (dll)، فایلهای مورد نیاز برای استفاده از Package و اطلاعات Package میباشد. این ابزار، مکانیزمهایی برای ایجاد، نگهداری و استفاده از کدها ارائه میدهد که برای هرکدام از این مکانیزمها ابزارهایی نیز فراهم کرده است. هنگام استفاده از NuGet توسعهدهنده نگران دریافت و اشتراک کدها نمیباشد چرا که خود NuGet این عملیاتها را مدیریت میکند.
پکیج
System.Text.Json
امکان تبدیل اشیاء زبان
#C
به
Json
و برعکس را فراهم میکند. دستور زیر این پکیج را به برنامه اضافه میکند:
dotnet add package System.Text.Json
کد زیر یک شیء #C را به Json تبدیل کرده و در خروجی چاپ میکند:
using System;
using System.Text.Json;
namespace HelloWorld
{
public class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
class Program
{
static void Main(string[] args)
{
var item = new Person() { FirstName = "Foo", LastName = "Bar"};
var serializedItem = JsonSerializer.Serialize(item);
Console.WriteLine(serializedItem);
}
}
}
در #C برای استفاده از کتابخانهها باید با کلیدواژۀ using کتابخانه را به کد اضافه کنید. کارایی using مشابه با import و include در زبانهای دیگر میباشد.
همچنین برای تعریف متغیر میتوانید از کلیدواژۀ var استفاده کنید. در این صورت کامپایلر از روی مقدار اولیه، نوع متغیر را مشخص میکند.
var i = 0;
// i is int
var s = "hi";
// s is string
var f = 1.5;
f = "hello";
// compile error
اگر دوست دارید بیشتر در مورد NuGet بدانید میتوانید مقاله An introduction to NuGet را بخوانید.
کمی پیشرفتهتر
در این مرحله یاد میگیرید چگونه با کنسول کار کنید. ابتدا سری به این آموزش بزنید و سعی کنید تمام کارهای گفته شده را انجام دهید. سپس میتوانید برحسب نیاز از آموزشهای زیر نیز استفاده کنید:
نامگذاریها در #C
یکی از گامهای مهم یادگیری هر زبان برنامهنویسی یادگیری اصول نامگذاری آن میباشد. شاید نامگذاری در وهله اول مورد مهمی به نظر نرسد اما این موضوع از جهتی اهمیت دارد که نب اید کد شما نسبت به کدهای جامعه برنامه نویسان آن زبان تافته جدا بافته باشد. برای آشنایی با این قواعد صفحات زیر را مطالعه کنید:
C# Interactive
گاهی نیاز داریم در محیطی تعاملی مانند زبانهای مفسری (مثل javascript ،python یا ...) دستوراتی را اجرا کنیم. #C نیز این امکان را با نام Net Interactive. در اختیار ما قرار داده است. برای استفاده از این ابزار اکستنشن Net Interactive. را برای VS Code نصب کنید. پس از نصب اکستنشن در محیط Net Interactive. این دستورات را اجرا کنید.
2 + 2
System.IO.Directory.GetCurrentDirectory()
Lambda Expressions
عبارات لام بدا (Lambda expressions) ساده شده متدهای بینام (Anonymous Function) هستند. برای اینکه با این مفهوم بیشتر آشنا شوید میتوانید لینکهای زیر را مطالعه کنید.
این امکان یک Syntactic sugar میباشد.
Extension Method
برای اضافه کردن متد به کلاسهای موجود بدون تغییر کلاس اصلی، تعریف کلاس فرزند یا کامپایل مجدد کتابخانه، از Extension Method استفاده میشود. Extension methodها static هستند و خارج از کلاس مورد نظر پیاده سازی میشوند اما به نحوی صدا زده میشوند که گویا عضوی از آن کلاس میباشند. مثلا می خواهیم یک عملکرد برای کلاس string (به دلیل sealed بودن قابل ارثبری نیست) پیادهسازی کنیم به صورتی که تعداد کلمات یک متن را برای ما شمارش کند:
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int WordCount(string str)
{
return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}
استفاده از کد بالا به صورت زیر میباشد.
var s = “Hello Extension Methods”;
var i = MyExtensions.WordCount(s);
حال اگر عبارت public static int WordCount(string str)
را به public static int WordCount(this string str)
تغییر دهیم. میتوانیم به این صورت از
extension method
استفاده کنیم:
var s = "Hello Extension Methods";
var i = s.WordCount();
برای مطالعهی بیشتر Extension Methods (C# Programming Guide) را مطالعه کنید.
LINQ
واژه LINQ (توجه داشته باشید که آن را Link تلفظ کنید) مخفف عبارت Language-Integrated Query است. LINQ یک راه یکسان را برای اتصال برقرار کردن به هر دادهساختار استاندارد فراهم میکند. برای درک بهتر و تمرین بیشتر لینکها ی زیر را مطالعه کنید:
پروژه
برنامهای بنویسید که دو فایل دانشجویان و نمرات را بخواند و سپس نام، نام خانوادگی و معدل سه دانشجوی اول را چاپ کند.
برای کار با زبان #C میتوانید IDEهای Visual Studio یا Rider را نصب کنید و از امکاناتشان بهرهمند شوید.
برای کار روی پروژهها از IDE استفاده کنید.
برای آشنایی با امکانات جدید زبان #C میتوانید ویدئوهای زیر را مشاهده کنید.