#C نیز یکی از زبان های برنامه نویسی است که بر پایه ساختار زبان C و برای برنامه نویسی در محیط .Net طراحی شده است.
یک وب سایت Asp.Net معمولا از کدی که بوسیله زبان Vb.Net یا C# ( بخوانید سی شارپ) نوشته شده تشکیل یافته است. وقتی که یک وب سایت را با زبان Vb.Net یا C# می سازید، در واقع برنامه Asp.Net ای مبتنی بر آن زبان ایجاد می کنید. این مساله تفاوت اصلی میان Asp.Net با صفحات Asp قدیمی ( کلاسیک) است، زیرا در Asp.Net شما از یک زبان برنامه نویسی واقعی , مانند Vb.Net یا C# با تمام امکانات آن استفاده می کنید در حالی که در صفحات Asp تنها می توانید از یک زبان خیلی خلاصه شده مانند VB Script استفاده نمایید .
حداکثر تعداد کلمات کلیدی در #C کمتر از ۹۰ می باشد. این زبان ساده و یادگیری آن آسان است و به زبانهایی مانند C ,C++ ,java نزدیک است. توسعه دهندگانی که یکی از این زبانها را بدانند، می توانند در مدت زمان کوتاهی به طور موثر از آن استفاده کنند. سینتکس #C برخی پیچیدگی های C++ را ندارد و قابلیت هایی مانند nullable value types, enumerations, delegates, anonymous methods and direct memory access را فراهم کرده، همچنین از امکانات iterators و generic methods and types نیز پشتیبانی می نماید.
C# به عنوان یک زبان برنامه نویسی، از مفاهیمی مانند encapsulation, inheritance and polymorphism نیز پشتیبانی می کند. همه ی متغیرها و متدها توسط کلاس ها Encapsulation می شوند. یک کلاس می تواند از سطح بالاتر خود ارث بری داشته باشد.
این زبان علاوه بر داشتن اشیا Object Oreinted دارای عناصری توسعه یافته برای ارتباط با نرم افزارهای ویندوزی است :
اگر نیاز به محاوره با اشیایی مانند COM یا Win32 Dll داشته باشید، می توانید این کار از طریق فرآیندی که Interop نامیده می شود انجام دهید. این فرآیند برنامه های #C را قادر می سازد تا درست مانند برنامه های C++ عمل نمایند. C# همچنین از اشاره گرها و مفهوم code Unsafe که برای دسترسی مستقیم به حافظه در مواقع بحرانی است نیز پشتیبانی می کند.
فرآیند ایجاد و کامپایل برنامه های #C در مقایسه با C ,C++ ساده تر و انعطاف پذیر تر از Java می باشد.
هر تعداد کلاس ، رکورد ، اینتر*** و رویداد را که نیاز داشته باشید می توانید در #C تعریف کنید.
برنامه های #C بر روی .NET Framework اجرا می شوند. کدهای نوشته شده به این زبان به یک زبان میانی یا IL تبدیل شده و سپس با پسوند .exe یا .dll در یک فایل اجرایی که اسمبلی نامیده می شود ذخیره می شوند.
زمانی که یک برنامه C# اجرا می شود، اسمبلی در CLR لود می شود و بسته به اطلاعات موجود در manifest عملیات مختلفی را انجام می دهد.اگر از مرحله ی ***** امنیتی عبور داده شود ، CLR از JIT استفاده کرده تا کد IL را به زبان اصلی ماشین تبدیل کند.
CLR همچنین سرویس های دیگری که با automatic garbage collection و exception handlingو resource management مرتبط هستند را ارائه می دهد. CLR در بعضی مواقع به کدهای Manage شده نیز معروف می باشد که در نهایت به زبان ماشین تبدیل می شود.