مستندات سی‌شارپ

 آموزش و مستندات زیر برگرفته از چندین سایت مختلف معتبر از جمله StackOverflow و مستندات مایکروسافت است. این آموزش ها توسط من ترجمه شده و تغییرات و یادداشت هایی نیز به آن اضافه شده است تا در اختیار کاربران وبلاگ آرین نرم افزار باشد.

توجه به دلیل اینکه مطلب هنوز کامل نشده است، نسخه PDF فعلا در دسترس نیست

زبان برنامه نویسی سی شارپ

C# یک زبان برنامه نویسی برای ساخت انواع مختلفی از نرم‌افزار هاست که روی چهارچوب دات‌نت طراحی شده است.

سی شارپ ساده، قدرتمند، دارای امنیت نوع و شی‌گراست. نوآوری های سی‌شارپ در عین حفظ رسایی و زیبایی زبان های خانواده سی به RAD یا توسعه سریع نرم افزارها منجر شده است.

شما با سی شارپ قادر به ساخت نرم افزار های ویندوزی، سرویس های وب XML، کامپوننت های توزیع شده، نرم‌افزار های کلاینت-سرور، نرم افزار های مرتبط با پایگاه داده و انواع بسیار مختلفی از نرم افزار های دیگر هستید. سی شارپ مجهز به ویرایشگر های کد بسیار قوی، رابط کاربری آسان و در دسترس، خطایاب مجتمع و بسیاری دیگر از ابزار های قدرتمندیست که توسعه نرم افزار های شما را با زبان سی‌شارپ و چهارچوب دات‌نت آسان می‌کند.

یک نکته کوچک در رابطه با این مطلب

لطفا توجه کنید که مخاطبین این مطلب کسانی هستند که با مفاهیم بنیادی برنامه نویسی آشنایی دارند. در صورتی که قبلا با زبان های دیگری کار کرده اید، به سرعت سی‌شارپ را با همین مطلب یاد خواهید گرفت

من مبانی برنامه نویسی را میدانم

در صورتی که زبان سی‌شارپ را روی سیستم خود ندارید، هم اکنون میتوانید از سایت ویژوال استودیو آن را همراه با این محیط توسعه بسیار قوی دانلود کنید.

  • VS Code

    ویژوال استودیو کد یکی از قدرتمند ترین ادیتور های موجود است که میتواند ویرایشگر بسیار خوبی برای توسعه نرم افزار های سی شارپ، به ویژه ساخت نرم افزار های ASP.Net MVC Core روی لینوکس باشد

    دانلود

  • Rider

    رایدر یکی از IDE خوب شرکت JetBrains ویژه دات‌نت است که روی سیستم عامل های مختلف اجرا می‌شود.

    دانلود

  • Visual Studio

    ویژوال استودیو و ویژوال استودیو Blend نسخه های محیط توسعه سی‌شارپ و به ترتیب ویژه کدنویسی حرفه ای و طراحی رابط کاربری حرفه ای هستند

    دانلود

  • Xamarin

    زامارین ویژه توسعه نرم افزار های موبایل و دسکتاپ برای اندروید، مک و ویندوز است و همچنین پروژه‌ها و ابزار های بسیار خوبی را جهت چندسکو کردن نرم افزار ها دارد

    دانلود

  • Xenko Game Engine

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

    دانلود

  • Unity Game Engine

    یونیتی یک موتور بازی سازی بسیار قویست که بازی های آن توسط سی شارپ ساخته می‌شوند

    دانلود

به عنوان یک زبان برنامه نویسی شی گرا، سی شارپ مفاهیم کپسول‌کنندگی، وراثت و چندریختی را پشتیبانی میکند. تمامی متغیر ها و متد ها، از جمله متد Main یعنی نقطه ورود به نرم‌افزار، در تعاریف کلاس ها کپسول می‌شوند. یک کلاس میتواند به طور مستقیم وارث کلاس پدر باشد و در کنار آن رابط های مختلفی را پیاده سازی کند.

نکته کسانی که قبلا با زبان برنامه نویسی جاوا کار کرده اند باید بدانند در سی شارپ، متد هایی که متدهای مجازی والدشان را باز‌تعریف میکنند، برای جلوگیری از تعریف مجدد تصادفی باید کلیدواژه override را به تابع خود اضافه کنند. همچنین در سی‌شارپ یک struct کلاس سبکی است که به جای ذخیره شدن در فضای Heap و اشغال آن، در Stack ذخیره می‌شود. Struct ها میتوانند رابط ها را پیاده سازی کنند، ولی توانایی وراثت ندارند.

در کنار شی گرایی، سی شارپ با سازه های زبانی جدید خود ساخت یک نرم افزار را بسیار سریع تر میکند. از جمله:

  • متد های کپسول شده با عنوان موکل‌ها که ما را قادر به پیاده سازی اعلان رویداد‌ها میکنند
  • ویژگی‌ها که به ما قابلیت دسترسی به متغیر های Private را میدهند
  • نشان‌ها که قابلیت تعریف داده های اضافی درباره تایپ ها در زمان اجرا را برای ما فراهم می‌آورند
  • کامنت گذاری و مستند سازی XML به صورت خطی
  • زبان جامع پرس‌وجو و یا LINQ که قابلیت Query کردن داده ها با پشتیبانی از چندین نوع منبع مختلف داده را دارد
  • متد های Extension که با استفاده از آنها میتوانید بدون تغییر در ساختمان یک کلاس، متد های دلخواه خود را به عنوان افزونه به آن اضافه کنید. به عنوان مثال افزودن یک تابع به کلاس رشته : "someString".MyCustomMethod()

در صورتی که تمایل دارید با سایر نرم افزار های ویندوز مثل اشیا COM ارتباط برقرار کنید و یا از کتاب خانه های بومی Win32 استفاده کنید، با استفاده از عملیاتی که Interop نامیده میشود این کار از طریق سی شارپ به راحتی ممکن است. خدمات Interop باعث میشود که سی شارپ بتواند تقریبا همه کار هایی که یک اپلیکیشن بومی C++ انجام میدهد را انجام دهد. همچنین سی شارپ میتواند در مواقعی که دسترسی مستقیم به حافظه ضروری میشود، قابلیت اشاره گر ها در سی پلاس پلاس را در قالب کد unsafe در خود بگنجاند.

معماری چهارچوب دات نت

سی شارپ روی چهارچوب دات‌نت اجرا میشود. یک جز کامل ویندوز که شامل یک سامانه اجرایی مجازی به نام زمان اجرای زبان‌ مشترک و یا به اختصار CLR است. CLR یک پیاده سازی تجاری از زیربنای زبان مشترک یا با اختصار CLI میباشد؛ یک استاندارد جهانی که مبنای ساخت اجرا و توسعه محیط هایی‌ست که در آن زبان های برنامه نویسی و کتاب خانه ها مشابها با یکدیگر کار کنند.

سورس کد های سی شارپ به یک زبان میانی تبدیل میشوند که با مشخصات CLI همخوانی دارد.

کد میانی (IL) به همراه منابعی چون بیت‌مپ ها و رشته ها روی فضایی از هارد دیسک معمولا با فرمت exe و یا dll به عنوان فایل اجرایی که به آن Assembly گفته میشود ذخیره میشوند.

تمامی Assembly ها دارای یک Manifest هستند که اطلاعاتی را در مورد نوع اسمبلی، نسخه، فرهنگ و اطلاعات امنیتی شامل میشود.

زمانی که یک برنامه C# اجرا میشود، اسمبلی آن در CLR بارگذاری میشود که بنابر اطلاعاتی که درون manifest آن قرار دارد ممکن است رویداد های مختلفی رخ دهد. پس از آن، در صورتی که نیاز های امنیتی برآورده شوند، CLR به صورت درجا کامپایل کردن را انجام میدهد تا کد IL به دستورات بومی ماشین تبدیل شود.

CLR خدمات دیگری را نیز مربوط به جمع آوری خودکار زباله های حافظه، مدیریت استثناها و مدیریت منابع انجام میدهد. گاهی به کدی که توسط CLR اجرا میشود، «کد مدیریت شده» نسبت داده میشود، در مقایسه با کد های «مدیریت نشده» ای که به یک ماشین بومی کامپایل میشوند و یک سیستم خاص را هدف میگیرند.

دیاگرام زیر ارتباط زمان-اجرا و زمان-کامپایل فایل های سورس کد سی شارپ، کتاب خانه های چهارچوب دات‌نت، اسمبلی ها و CLR را توضیح میدهد.

 

این قابلیت همکاری زبانی یکی از ویژگی های کلیدی در دات‌نت است. چرا که کد میانی ای که توسط کامپایلر سی شارپ تولید میشود با مشخصات نوع مشترک مطابقت دارد. کد میانی تولید شده توسط سی شارپ میتواند با کد تولید شده توسط نسخه های دات‌نتی ویژوال بیسیک، سی پلاس پلاس و یا بیش از ۲۰ زبان سازگار با CTS تعامل داشته باشد.

پروژه Hello World

تقریبا میتوان گفت اولین مرحله در یادگیری هر زبان برنامه نویسی، یادگیری گرفتن خروجی از آن است. نحوه دریافت خروجی در یک زبان برنامه نویسی، به ویژه آن هم در سی شارپ که انواع متفاوتی از پروژه ها و پلتفرم ها را پشتیبانی میکند به روش های بسیاری ممکن است. خروجی ما میتواند یک متن نوشته شده در یک کنسول، یک برچسب در فرم های ویندوزی، متنی در یک بلاک متنی، پیغامی با دکمه تایید و یا ... باشد. اما ما راحت ترین راه یعنی نمایش متن در یک کنسول بدون رابط کاربری را انتخاب میکنیم تا در ابتدای کار برخی از مفاهیم مورد نیاز را هم بیاموزیم.

یک سنت قدیمی

در میان برنامه نویسان یک سنت قدیمی مرسوم است که حین شروع با یک زبان برنامه نویسی جدید ابتدا عبارت Hello World چاپ شود. بدون شک این سنت یک وحی منزل الهی نیست و شما مختارید تا کد و دستورات چاپ و الی آخر خود را در این آموزش به هر شکلی که دوست دارید تغییر دهید و آن ها را تست کنید.
در یادگیری برای خود محدودیتی قائل نشوید.

روش کار:

  • ابتدا ویژوال استودیو را باز کنید.
  • در منو ابزار ها به بخش File → New Project بروید
  • از میان انواع مختلف نرم افزار ها روی Console Application کلیک کنید
  • در Solution Explorer فایل Program.cs را باز کنید
  • چیزی شبیه به فایل زیر را خواهید دید. کد موجود در تابع Main را همانند زیر به تابع Main خود اضافه کنید
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AryanSoftware
{
  class Program
  {
    static void Main(string[] args)
    {
      // یک پیام را در کنسول چاپ میکند
      Console.WriteLine("Hello, World!");

      /* منتظر کاربر بمان تا کلیدی را فشار دهد
         این دستور یکی از راه های معمولی‌ست که توسط آن از
         از بسته شدن کنسول و ناپدید شدن آن قبل از اینکه برنامه نویس
         محتوای چاپ شده در کنسول را ببیند جلوگیری میکند
      */
      Console.ReadKey();
    }
  }
}

نمونه کد شماره یک

  • در نوار ابزار روی Debug → Start Debugging کلیک کنید تا برنامه خود را اجرا و عیب یابی کنید. این کار به وسیله کلید F5 هم امکان پذیر است. همچنین درصورتی که مایلید بدون فعال شدن ابزار های عیب یابی ویندوز تنها از برنامه خود اجرا بگیرید دکمه های ترکیبی Ctrl + F5 را بفشارید.

در صورتی که قبلا با زبان های دیگری کار کرده باشید به احتمال زیاد بخش های زیادی از کد برای شما مفهموم است. در صورتی هم که کد ها برایتان چیزی بیشتر از چند حرف انگلیسی نیست عیبی ندارد. همه بخش های کد به موقع توضیح داده خواهد شد ولی فعلا به طور مختصر به این توضیحات بسنده کنید:

  • خطوط شروع شونده با using در ابتدای کد در حال اعلان این موضوع است که شما از توابع و کلاس های موجود در فضای‌‎نام های گفته شده در خطوط یکم تا پنجم استفاده میکنید. یک فضای‌نام قلمرویی‌ست که در آن چندین کلاس تعریف شده است. کلاس های موجود در یک فضای نام نمیتوانند هم نام باشند ولی در فضای‌نام های متفاوت میتوان کلاس هایی با نام های یکسان وجود داشته باشد. به عنوان مثال در کتاب خانه کلاس های دات‌نت برای دو کلاس متفاوت، نام یکسان Button انتخاب شده است که یکی در فضای نام System.Windows.Forms و دیگری در فضای نام System.Windows.Controls وجود دارد و این دو به دلیل اینکه در دو فضای متفاوت هستند با دیگری تداخلی ندارند.
  • کلاس Console که در تکه کد بالا از دو تابع WriteLine() و ReadKey() موجود در آن استفاده کردیم، بخشی از فضای نام System است که در اولین خط وارد کد شده. اگر در ابتدای کار این فضای نام را با استفاده از کلیدواژه using وارد کد نمیکردیم، باید به طور مستقیم میگفتیم که از کلاس کنسول موجود در System استفاده میکنیم و کد ما به شکل زیر تغییر میکرد:
...
System.Console.WriteLine("Hello, World!");
...
System.Console.ReadKey();
...
  • سایر using ها فعلا برای ما کاربردی ندارند، ولی از آنجا که کلاس های موجود در آنها پر کاربرد است و در غالب نرم افزار ها به آنها نیاز میشود به طور پیشفرض در کد نوشته میشوند.
  • خط شامل namespace AryanSoftware { ... } در حال اعلان این موضوع است که تمامی کلاس هایی که بین دو براکت تعریف می‌شوند بخشی از فضای‌نام AryanSoftware خواهند بود.

نکته

شما میتوانید برای یک فضای نام اسم مستعار انتخاب کنید. فرض کنید در فضای نام MyNamespace.Inner1.Inner2 کلاس MyClass وجود داشته باشد. آنگاه میتوانید از کلاس موجود در آن به این شکل استفاده کنید:

using s = MyNamespace.Inner1.Inner2;
...
s.MyClass.SomeMethod();
برای استفاده از تمامی متد های استاتیک یک کلاس نیز میتوان از using static ...; استفاده کرد
  • بخش static void Main(string[] args) { ... } تعریف رفتار تابع Main و نقطه شروع یک برنامه سی شارپ است. static و void کلید واژه های رزرو شده سی شارپ هستند که درباره آنها بعدا صحبت خواهیم کرد.
  • شما ممکن است در کد خود پشت تابع Main و یا کلید واژه class، کلید واژه های public را مشاهده کنید. در باره این مورد نیز بعدا صحبت خواهد شد.
  • string[] args پارامتر تابع Main است که به آن پاس داده می‌شود و در بدنه تابع میتوان از مقادیر آن استفاده کرد. این آرگومان ها در هنگام اجرای برنامه توسط کنسول به آن داده میشوند و در حالت عادی اجرای نرم افزار محتوای args آرایه ای بدون عنصر است.
  • // Comment ویژه کامنت گذاری درخط و /** Line 1 ... Line 2 **/ برای کامنت گذاری در چند خط است.

برخی از کتاب خانه های دات نت

توضیحات فضای نام

فضای نام سیستم کلاس های بنیادی و پایه که به طور مشترک برای نوع داده های مقداری و ارجاعی، رویداد ها و هندل کنندگان رویداد ها، رابط ها، نشان ها و هندل کردن استثنا هاست

System

این فضای نام شامل تمام کلاس های مورد نیاز برای ساخت و کار با فعالیت ها در Windows Workflow Foundation است

System.Activities

این فضای نام، نوع های مورد نیاز برای شناسایی، ثبت نام، فعال سازی و کنترل افزونه ها و اجازه افزونه ها برای ارتباط با نرم افزار میزبان است

System.AddIn

این فضای نام کلاس هایی را شامل میشود که عناصر یک سند شامل سورس کد که خود از تولید و کامپایل سورس کدها در یکی از زبان های برنامه نویسی پشتیبانی کند را بیان کند

System.CodeDom

این فضای نام انواعی را شامل میشود که کلکسیون های استاندارد، ویژه و عام منظوره ای را تعریف کنند

System.Collections

این فضای نام انواعی را شامل میشود که رفتار کنترل ها و کامپوننت ها را در زمان اجرا و یا زمان طراحی پیاده سازی میکنند. فضای نام های فرزند از چهار چوب توسعه پذیری مدیریت شده پشتیبانی میکنند، کلاس های نشان که اطلاعات اضافی ویژه کنترل های داده های پویا برای ASP.NET را فراهم میکند، و شامل کلاس هایی‌ست که به شما اجازه میدهد تا رفتار زمان طراحی کامپوننت ها و رابط کاربری آنها را تعریف کنید

System.ComponentModel

این فضای نام کلاس هایی مربوط به دسترسی و مدیریت داده ها از منابع مختلف را شامل میشود. فضای نام پدر و برخی از فضای نام های فرزند با یکدیگر معماری ADO.NET و تهیه کنندگان داده ADO.NET را تشکیل میدهند. به عنوان مثال، تهیه کنندگان برای SQL-Server، Oracle، ODBC و OleDB. سایر فضای نام های فرزند کلاس هایی را شامل میشوند که توسط ADO.NET Entity Data Model (EDM) و WCF Data Services استفاده میشوند.

System.Data

این فضای نام شامل کلاس هایی برای آرایش نرم افزار های تکنولوژی ClickOnce است

System.Deployment

این فضای نام به توسعه دهندگان این امکان را میدهد که به سادگی به موقعیت کامپیوتر دسترسی داشته باشند. اطلاعات موقعیت ممکن است از منابع متفاوتی چون GPS، سه گوشه سازی Wi-Fi و یا سه گوشه سازی اطلاعات داده موبایل همراه باشد. این فضای نام تهیه‌کنندگان چند گانه موقعیت روی کامپیوتر را کپسول میکند و از اولویت و انتقال یکپارچه بین آنها پشتیبانی میکند. به عنوان یک نتیجه، توسعه دهندگان نیازی به دوخت نرم افزار به تنظیمات سخت افزار برای موقعیت یابی کامپیوتر نخواهند داشت.

System.Device.Location

این فضای نام شما را قادر میسازد تا با پردازش های سیستم، لاگ رویداد ها، و شمارندگان کارایی ارتباط برقرار کنید. فضای نام های فرزند کلاس هایی را شامل میشوند تا با ابزار های آنالیز کد ارتباط داشته باشند، از قرارداد ها پشتیبانی کنند، پشتیبانی زمان طراحی برای مانیتورینگ نرم افزار ها و ابزار ها را توسعه دهند، از داده رویداد ها که از زیر ساخت ردیابی Event Tracing for Windows (ETW) استفاده میکند لاگ بگیرند، از لاگ رویداد ها بخوانند و روی آن بنویسند، داده های کارایی را جمع آوری کنند، و از اطلاعات نماد عیب یابی بخوانند و یا روی آن بنویسند

System.Diagnostics

این فضای نام شامل نوع هایی‌ست که دسترسی به دایرکتوری فعال را از طریق کد مدیریت شده فراهم میکند

System.DirectoryServices

این فضای نام شامل کلاس هایی‌ست که از کاربرد های ساده گرافیک GDI+ پشتیبانی میکند. فضای نام های فرزند از گرافیک های دو بعدی و برداری پیشرفته، کاربرد های پیشرفته تصویری، و خدمات پرینت و تایپوگرافی پشتیبانی میکند. همچنین یک فضای نام فرزند نوع هایی را شامل میشود تا منطق رابط کاربری و نقاشی را در هنگام طراحی توسعه دهد.

System.Drawing

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

System.Dynamic

این فضای نام شامل نوع هایی است که خدمات معماری COM+ را تعریف میکنند؛ که زیر ساخت ها را برای برنامه های تجاری فراهم میکند. یک فضای نام فرزند از مدیریت منابع مالی، یکی از خدمات COM+ که امکان مشمول شدن اشیا بدون تراکنش به معاملات هماهنگ کننده توزیع شده معامله های مایکروسافت ایجاد میکند پشتیبانی میکند. فضای نام های فرزند به طور خلاصه در این جدول و به طور مفصل در مستندات توضیح داده شده اند.

System.EnterpriseServices

این فضای نام شامل کلاس هایی‌ست که اطلاعات مربوط به فرهنگ، از جمله زبان، منطقه/کشور، تقویم های کاربردی، فرمت های رایج نمایش تاریخ، ارز، اعداد و ترتیب گذاری رشته ها را تعریف میکنند. این کلاس های برای نوشتن نرم افزار های جهانی (بین المللی) مفید اند. کلاس هایی همچون StringInfo و TextInfo کاربرد های پیشرفته جهانی سازی از جمله پشتیبانی از جایگزینی و پردازش عناصر متنی را فراهم میکنند.

System.Globalization

این فضای نام شامل کلاس هایی برای احراز هویت و مجوز برای برنامه های دات‌نت است.

System.IdentityModel

این فضای نام شامل نوع هایی‌ست که از ورودی و خروجی، شامل قابلیت خواندن و نوشتن داده روی جریان ها به‌صورت همگام و یا ناهمگام، فشرده سازی داده در جریان ها، ساخت و استفاده از مخازن ایزوله، مپ کردن فایل ها روی آدرس منطقی یک برنامه، ذخیره چندین شی داده در یک مخزن، ارتباط ناشناس و یا نام گذاری شده با پایپ ها، پیاده سازی لاگ شخصی سازی شده، و هندل کردن جریان داده ها از پورت های سریال و به آنها پشتیبانی میکند.

System.IO

این فضای نام شامل نوع های‌ست که از کوئری هایی که از زبان سیستم جامع پرس‌وجو استفاده میکنند پشتیبانی میکند. همچنین شامل نوع هایی است که کوئری ها را به عنوان یک شی در یک درخت عبارت ارائه میکنند.

System.Linq

این فضای نام شامل نوع هایی است که دسترسی به مدیریت اطلاعات و مدیریت رویداد ها در مورد سیستم، دستگاه ها، و برنامه هایی که به زیر ساخت ابزارهای مدیریت ویندوز وابسته هستند را تهیه میکند. این فضای نام ها همچنین شامل نوع هایی ضروری برای کاربردی کردن نرم افزار ها هستند تا مدیریت اطلاعات و رویدادشان را از طریق WMI به مشتریان بالقوه ارائه دهند.

System.Management
این فضای نام ویژه پخش فایل های صدا و دسترسی به صداهایی است که توسط سیستم تهیه میشود. System.Media
این فاضی نام شامل نوع هایی است که شما را قادر به اتصال به مانیتور و مدیریت پیام های صف بندی شده شبکه و ارسال، دریافت، یا نظر انداختن به پیام ها میکند. یک فضای نام فرزند شامل کلاس هایی است که میتوان از آن برای گسترش پشتیبانی کلاس های پیام در زمان طراحی استفاده کرد. System.Messaging
این فضای نام شامل کلاس هایی به منظور تهیه یک رابط برنامه نویسی ساده برای چندین پروتکل شبکه، دسترسی و به روزرسانی تنظیمات با برنامه نویسی برای فضای نام های System.Net، تعریف سیاست های حافظه نهان برای منابع وب، ساخت و ارسال ایمیل، ارائه هدر برای تبادل ایمیل های اینترنتی چند منظوره، دسترسی به داده های ترافیک شبکه و اطلاعات آدرس شبکه، و دسترسی نظیر-به-نظیر کاربرد های شبکه است. فضای نام های اضافه فرزند یک پیاده سازی مدیریت شده از رابط سوکت های ویندوز و دسترسی به جریان های شبکه برای ارتباط امن تر بین میزبان ها را تهیه میکنند. System.Net
این فضای نام شامل نوع اعداد هستند که نوع ابتدایی اعداد را کامل میکنند، از جمله Byte، Double و Int32 که توسط چهارچوب دات‌نت تعریف می‌شوند. System.Numerics
این فضای نام شامل نوع هایی‌ با پشتیبانی از چاپ، که دسترسی به ویژگی های اشیا چاپ سیستم را فراهم میکنند و امکان کپی سریع از تنظیمات آن ها به یک شی دیگر از همان نوع را ایجاد میکنند، و همچنین از تعامل مدیریت شده اشیا System.PrintTicket و ساختمان های مدیریت نشده GDI DEVMODS نیز پشتیبانی میکنند. System.Printing
این فضای نام شامل نوع هایی است که نمایش مدیریت شده از نوع های بارگذاری شده، متدها و فیلدها را تهیه میکند و همچنین میتواند به طور پویا نوع ها را بسازد و فرا بخواند. یک فضای نام فرزند شامل نوع هایی ست که میتواند یک کامپایلر یا یک ابزار دیگر را قادر سازد تا ابرداده ها و زبان میانی مایکروسافت را تولید کنند. System.Reflection
این فضای نام شامل نوع هایی است که توسعه دهندگان را قادر به ساخت، ذخیره و مدیریت منابع یک نرم افزار با فرهنگ مخصوص میکند. System.Resources
این فضای نام شامل نوع هایی است که از آثار متقابل برنامه ها با CLR و نوع هایی که دارای ویژگی هایی چون کش کردن داده های نرم افزار،  هندل کردن پیشرفته استثناها، فعال سازی برنامه ها با قلمرو نرم افزار ها، COM متقابل، نرم افزار های توزیع شده، سریال سازی و دیسریال سازی و نسخه گذاری هستند پشتیبانی میکند. فضای نام های اضافه، نویسندگان کامپایلر را قادر میسازند تا نشان هایی را تعریف کنند که روی رفتار زمان اجرای CLR تاثیر بگذارد، یک قرارداد اطمینان بین مجموعه ای از کد ها و دیگر کد هایی که به آن وابسته اند تعریف، و یک تهیه کننده مقاوم برای بنیاد ارتباطات ویندوز پیاده سازی میکند. System.Runtime
یک مارشالینگ درونی برای چهارچوب دا‌ت‌نت تعریف میکند. System.Runtime.InteropServices.CustomMarshalers
این فضای نام شامل کلاس هایی است که سامانه امنیت و اجازه ها را در دات‌نت ارائه میکنند. فضای نام های فرزند نوع هایی را فراهم میکنند که دسترسی به بازرسی اشیا قابل امن شدن را کنترل و احراز هویت میکند، خدمات رمزنگاری را فراهم میکند، دسترسی به دستورات و منابع را بسته به سیاست ها کنترل میکند و همچنین از مدیریت حقوق برای محتواهایی که توسط نرم افزار ها تولید شده اند پشتیبانی میکند. System.Security
این فضای نام شامل نوع های ضروری برای ساخت خدمات بنیاد ارتباطات ویندوز و نرم افزار های مشتری‌ست. System.ServiceModel
این فضای نام شامل نوع هایی‌ست که شما را قادر به پیاده سازی، نصب و کنترل سرویس های ویندوز و همچنین گسترش پشتیبانی زمان طراحی سرویس های ویندوز میکند System.ServiceProcess
شامل نوع هایی برای تشخیص صداست. System.Speech
این فضای نام شامل نوع هایی برای انکودینگ کاراکترها و تولید رشته هاست. یک فضای نام فرزند شما را قادر میسازد تا متن ها را به وسیله عبارات منظم پردازش کنید. System.Text
این فضای نام شما را قادر به برنامه نویسی چندنخه میکند. یک فضای نام فرزند نوع هایی را برای راحت تر کردن نوشتن موازی و کدهای ناهمگام تهیه میکند. System.Threading
این فضای نام یک مدل برنامه نویسی Actor را که از پیامی با پشتیبانی پردازش داخلی برای گذر از جریان های داده ای درشت و Task های خط‌لوله ارائه میدهد. برای اطلاعات بیشتر جریان داده ها (کتاب خانه کار های موازی) را ببینید. System.Threading.Tasks.Dataflow
این فضای نام کامپوننت Timer که یک رویداد را در زمان های خاص اجرا میکند را شامل میشود. System.Timers
این فضای نام شامل نوع هایی است که از معاملات با ثبت نام های چندگانه، شرکای توزیع شده،  اعلانات چند فازه و مدت دار پشتیبانی میکنند. یک فضای نام فرزند شامل نوع هایی است که تنظیمات استفاده شده با نوع های Sysyem.Transactions را توضیح میدهد. System.Transactions
این فضای نام شامل نوع هایی است که مرورگر/سرور را قادر به برقراری ارتباط میسازد. فضای نام های فرزند شامل نوع هایی هستند که از احراز هویت فرم های ASP.NET، خدمات نرم افزار ها، کش کردن داده ها روی سرور، تنظیمات نرم افزار های ASP.NET، داده های پویا، هندل کننده های HTTP، سریال کننده های JSON، ترکیب کاربرد های AJAX در ASP.NET، امنیت ASP.NET و وب سرویس ها پشتیبانی میکنند. System.Web
این فضای نام شامل نوع هایی است که در نرم افزار های بنیاد ارائه در ویندوز، از جمله انیمیشن ها، کنترل های رابط کاربری، انقیاد داده ها و تبدیل نوع ها استفاده میشود. فضای نام System.Windows.Forms و فرزندانش هم برای استفاده در نرم افزار های Windows Forms استفاده میشوند. System.Windows
این فضای نام شامل نوع هایی است که برای توسعه نرم افزار هایی که از بنیاد جریان کار در ویندوز استفاده میکنند، استفاده میشود. این نوع ها پشتیبانی زمان طراحی و زمان اجرا برای قوانین و فعالیت ها را تهیه میکنند تا موتور زمان اجرای جریان کار را تنظیم، میزبانی و عیب یابی کنند. System.Workflow
این فضای نام شامل نوع هایی است که از تجزیه و پردازش زبان نشانه گذاری توسعه پذیر پشتیبانی کنند. System.Xaml
این فضای نام شامل نوع هایی برای پردازش XML است. فضای نام های فرزند از سریال کردن اسناد و یا جریان های XML، اسکیما های XSD، XQuery 1.0 ، XPath 2.0 و LINQ به XML (که یک رابط برنامه نویسی در-حافظه XML برای تغییر راحت اسناد XML است) پشتیبانی میکند. System.XML
این فضای نام و تمامی اعضای آشکار آن بخشی از پوشش مدیریت شده رابط دستیابی Component Object Model (COM) هستند. Accessibility
این فضای نام شامل نوع هایی است که از MSBuild و افزونه های عیب یابی برای بنیاد جریان کار در ویندوز پشتیبانی میکنند. Microsoft.Activities
این فضای نام شامل نوع هایی است که دسترسی برنامه ریزی شده به موتور MSBuild و کنترل آن را تهیه میکند. Microsoft.Build
این فضای نام شامل نوع هایی است که از کامپایل و تولید کد از سورس کد های نوشته شده به زبان برنامه نویسی سی‌شارپ، و نوع هایی با پشتیبانی از دستورات بین سی‌شارپ و زمان اجرای زبان پویا پشتیبانی میکند. Microsoft.CSharp
این فضای نام شامل نوع هایی ست که از کامپایل و تولید کد های زبان JScript پشتیبانی میکنند. Microsoft.JScript
این فضای نام شامل کلاس ها، رابط ها و شمارنده هایی است که مخصوص یکپارچگی CLR چهار چوب دات‌نت مایکروسافت و SQL Server مایکروسافت؛ و همچنین محیط اجرایی پردازش های موتور پایگاه داده SQL Server است. Microsoft.SqlServer.Server
این فضای نام شامل کلاس هایی است که از کامپایل و تولید کد های نوشته شده به زبان برنامه نویسی Visual Basic پشتیبانی میکنند. فضای نام های فرزند شامل نوع هایی هستند که از خدمات کامپایلر ویژوال بیسیک و نوع هایی که شامل مدل نرم افزاری ویژوال بیسیک، فضای نام My، عبارات لامبدا و تبدیلات کد پشتیبانی میکنند. Microsoft.VisualBasic
این فضای نام شامل نوع هایی برای پشتیبانی از کامپایلر سی پلاس پلاس، نوع هایی که STL/CLR را پیاده سازی میکنند و همچنین رابط های جنریک کتاب خانه STL/CLR است. Microsoft.VisualC
این فضای نام شامل نوع هایی است که به رویدادهای مطرح شده توسط سیستم عامل سیدگی می کنند، رجیستری سیستم را اداره می کنند و فایل ها و هندل های سیستم عامل را ارائه میکنند. Microsoft.Win32
این فضای نام شامل نوع هایی است که از پوسته ها و پیش نمایش ها در نرم افزار های Windows Presentation Framework (WPF) پشتیبانی میکنند. Microsoft.Windows
تنها شامل یک نوع برای نگاشت ارائه دهندگان آتوماسیون مشتری ست. UIAutomationClientsideProviders
شامل نوع هایی است که کامپایلر تولید میکند و قرار نیست به طور مستقیم در کد شما استفاده شود. XamlGeneratedNamespace

متغیر ها و نوع های آماده سی شارپ

به کد زیر نگاه کنید:

var myName = "Aryan";
string myLastName = "Ebrahimpour";

Console.WriteLine("myName"); // Prints: myName
Console.WriteLine(myName); // Prints: Aryan
Console.WriteLine(myName + " " + myLastName); // Prints: Aryan Ebrahimpour

int number1 = 2;
int number2 = 3;

string strNumber1 = "2";
string strNumber2 = "3";

Console.WriteLine(number1 + number2); // Prints: 5
Console.WriteLine(strNumber1 + strNumber2); // Prints: 23

uint myBirthYear = 1376;
var isTired = false;
bool isThinking = true;
float dpiScaleFactor = 1.25;
  • در سی شارپ میتوانید متغیر ها را به شکل ساده تری تنها با کلید واژه var تعریف کنید. به این نوع تعریف متغیر، تعریف متغیر به صورت Implicit میگویند.با استفاده از این کلید واژه، نوع متغیر در هنگام اجرا تشخیص داده می‌شود. توجه کنید که از این نوع تعریف نمیتوانید در Initialization استفاده کنید به عنوان مثال عبارت int i = (i = 20); یک گزاره درست است ولی عبارت var i = (i = 20); با خطای کامپایل مواجه میشود.