زبان C# توسط مایکروسافتبه وجود آمد .سی شارپ یکی از ۴۴ زبان برنامه نویسیای است که توسط زمان اجرای زبان مشترک از .NET Framework پشتیبانی میشوند و در همه جا به وسیله مایکروسافت ویژوال استودیو شناخته میشود. این زبان برپایه سادگی، مدرن بودن، همه منظوره و شی گرا بودن ساخته شد .
آندرس هجلزبرگ، طراح زبان برنامه نویسیدلفی، سرپرستی تیم طراحان زبان C# را بر عهده داشت.این زبان دارای دستوری شی گرامشابه C++ است . در ابتدا نام این زبان cool بود که مخفف C like Object Oriented Language بود، هر چند در جولای ۲۰۰۰ ، زمانی که مایکروسافت پروژه را عمومیاعلام کرد، اسم آن به C# تغییر پیدا کرد. طراحان زبان C# با تاکید و الگوبرداری مناسب از مزایای زبانهائی نظیر C++ ، C و جاوا و نادیده گرفتن برخی از امکانات تامل برانگیز و کم استفاده شده در هر یک از زبانهای فوق، یک زبان برنامه نویسی مدرن شی گراء را طراحی کرده اند. در مواردی، برخی از ویژگیهای استفاده نشده و درست درک نشده در هر یک از زبانهای گفته شده، حذف و یا با اعمال کنترلهای لازم بر روی آنها، زمینه ایجاد یک زبان آسان و ایمن برای اغلب برنامه نویسان بوجود آمده است. مثلا C و C++ میتوانند مستقیما با استفاده از اشاره گرها عملیات دلخواه خود را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامههای کامپیوتری با کارائی بالا ضرورت اساسی دارد. اما در صورتیکه عملیاتی اینچنین بدرستی کنترل و هدایت نگردند، خود میتواند باعث بروز مسائل (Bugs) بیشماری گردد. طراحان زبان C# ، با درک اهمیت موضوع فوق، این ویژگی را کماکان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ایجاد اطمینانهای لازم مسئله حفاظت نیز مورد توجه قرار گرفته است. جهت استفاده از ویژگی فوق، برنامه نویسان میبایست با صراحت و به روشنی خواسته خود را از طریق استفاده از Keyword های مربوطه اعلان نمایند . C# بعنوان یک زبان شی گراء عالی است. این زبان First-Class را برای مفهوم Property (Data Member) بهمراه سایر خصائص عمومیبرنامه نویسی شی گراء حمایت میکند. در C و C++ و جاوا یک متد get/set اغلب برای دستیابی به ویژگیهای هر Property استفاده میگردد . CLI همچنان تعریف Property را به متدهای get/set ترجمه کرده تا بدین طریق بتواند دارای حداکثر ارتباط متقابل با سایر زبانهای برنامه نویسی باشد . C# بصورت فطری Events ، Declared Value ، Reference Type ، Operator Overloading را نیز حمایت میکند .