رفتن به مطلب

میدونید فرق c# و ++c چیه؟


ارسال های توصیه شده

میدونید فرق C# و ++C چیه؟ اگه میدونید که هیچی اگه نه این مطلب و بخونید حتما یه چیزایی دستگیرتون میشه!!!

 

اولا با C# فقط برنامه های تحت .NET میشه نوشت (در واقع C# برای .NET درست شده) ، اما با C++ هم برنامه های تحت .NET (managed) و هم برنامه های native میشه نوشت.

 

دوما هنوز برای کارهای سطح پایین (مثل Device Driver) و سنگین (مثل بازی های سه بعدی) C++ انتخاب اول و آخر محسوب میشه.

 

C# خیلی راحتتر ، تمیزتر و خوش ساخت تر از C++ طراحی شده و از نظر شی گرایی هم پشتیبانی بهتری داره نسبت به C . C# کاملا شی گراست و اصلا نمیتونید برنامۀ غیر شی گرا در اون بنویسید ، در صورتی که با C++ میتونین هم شی گرا و هم غیر شی گرا ، برنامه بنویسید.

 

از ویژگی های C# :

 

1- مدیریت خودکار حافظه توسط CLR

 

2- پشتیبانی از یک نوع String داخلی

 

3- پشتیبانی از foreach

 

4- پشتیبانی کامل از delegate و event و interface و Property و attribute ها

 

5 - XML Documentation

 

6 – checked / unchecked keywords

 

و ...

 

در C# برای انجام تمام کارها از کلاس های .NET استفاده میشه ، در ضمن در C# چیزی به نام فایلهای Header و #include و از این حرفا نداریم. در واقع C# خیلی زیباتر از C++ طراحی شده ، چون به هر حال در طراحی C# از زبانهایی مثل C++ و JAVA و Delphi درس گرفته شده و اشتباهات اون زبانها در C# تکرار

نشده ؛ به عنوان مثال در C++ به تعداد انگشتان دست ، نوع دادۀ String داریم. یا Multiple Inheritance که خیلی دردسر سازه ، یا مثلا در JAVA ، enum ها و Operator Overloading و Pointer و Property ها که همگی جزو ضروریات محسوب میشن ، وجود ندارن. البته کسانی که میخوان کار سنگین یا سطح پایین در .NET انجام بدن ، معمولا همه قسمتهایی رو که امکانش هست با C# می نویسن و بقیه رو با C++ ؛ و در C# از کلاسهای نوشته شده در C++ استفاده می کنن . (Wrapper Classes ) در کل C# ، سطح بالاتر(High Level ) از C++ است ؛ در C++ حتی میتونید مستقیما از کد اسمبلی استفاده کنید.

 

در ضمن C# اولین زبان Component Oriented در خانوادۀ C محسوب میشه.

 

خیلی تفاوتها و شباهتهای دیگری هم هست که در صورت پرداختن به اونا بحث خیلی تخصصی میشه ، فقط در یه جمله بگم : بزرگترین شباهت این دو زبان اینه که هر دو جزو خانوادۀ C هستن . و بزرگترین تفاوت اینکه : C# یک زبان type-safe هست (بر خلاف C++ ) و فقط باهاش میشه برنامه های تحت .NET نوشت.

 

البته قصدم از این مطالب اثبات برتری C# به C++ نبود ، چون به هر حال برای برنامه های تحت .NET ، C# بهترین گزینه است و در جاهای دیگه هنوز هم C++ قویترین زبان دنیاست.

  • Like 7
لینک به دیدگاه
  • 3 ماه بعد...

در واقع صحبت درمورد فرق سي با سي شارپ خيلي درست نيست، چون از پايه اين دو باهم تفاوت دارن

براي درک فرق اساسي اين دو به لينک زير مراجعه کنيد

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

اما با C++ هم برنامه های تحت .NET (managed) و هم برنامه های native میشه نوشت.
اگر منظورتون از ++C همون ++Win32C هست که نميشه بااون برنامه تحت دات نت نوشت. اون C++.Net هستش که بااون ميشه برنامه تحت دات نت نوش و اين دوتا باهم خيلي فرق دارن و قواعدشون متفاوته.

 

 

یا Multiple Inheritance که خیلی دردسر سازه
به نظرم به خاطر اينکه سي شارپ کاملا شي گرا هست اين گزينه در اون وجود نداره.

یا مثلا در JAVA ، enum ها و Operator Overloading و Pointer و Property ها که همگی جزو ضروریات محسوب میشن ، وجود ندارن

:jawdrop: چرا وجود ندارن؟

Operator Overloading براي کلاس ها موجود هست.

Pointer : چون تعريف متغير از نوع کلاس مانند اشاره گر هست، اين گزينه موجود نيست وگرنه در دلفي با اينکه ميشه کلاس را ايجاد کرد ، اشاره گرها هستند و برنامه نويسان توصيه مي کنند که کاربران (برنامه نويسان ديگر) بهتره که از اونها اطلاع داشته باشن.

Property هم که جزو ضروريات کلاس هست.

 

و بزرگترین تفاوت اینکه : C# یک زبان type-safe هست (بر خلاف C++ ) و فقط باهاش میشه برنامه های تحت .NET نوشت.

به نظر بنده بزرگترين تفاوت اينه که #C کد Managed توليد مي کند و ++C کد Native

 

با تشکر از مطلب خوبتون:icon_pf (44):

  • Like 4
لینک به دیدگاه
×
×
  • اضافه کردن...