مهدی عزیزی

۱۳ مطلب با کلمه‌ی کلیدی «سی شارپ» ثبت شده است

امکانات جدید #C و Visual Basic در Visual Studio 2015

Microsoft  ورژن جدید visual studio  ، یعنی پیش نمایش visual studio 2015   را در نوامبر 2014  منتشر کرد.
نکته جالب این است که این اولین release  عمومی یک ورژن visual studio  است که به صورت  open source  منتشر شده، در نتیجه اولین (CTP (Common Technology Preview  به صورت عمومی در دسترس است ،      می توانیم آن را از سایت مایکروسافت download  کنیم.

به یاد داشته باشید که Roslyn  نسل بعدی کامپایلر های .NET  برای# C  و Visual Basic  است.
در کنفرانس ()Visual Studio Connect  بحث های جالبی وجود داشت. تغییرات جدیدی در C# ، Visual Basic  و #F  به وجود آمده است . تیم اصلی مایکروسافت تغییرات عمده ای را برای پیاده سازی مجدد زبان های #C و  Visual Basic  انجام داده اند.همان طور که می دانید یک stack  پیشرفته که دارای معماری خوب و تمیزی است ، به برنامه نویس این امکان را می دهد که سریع تر  کار کند و هم چنین امکان این را می دهد که ابزار هوشمند (Code Smart)  برای  application  ها را بسازد.از امروز به بعد می توانیم تجربه IDE  قدرتمندتر و هوشمندتری در  visual studio داشته باشیم.
در این مقاله همان طور که در کنفرانس گفته شده ، تاکید بر روی امکانات جدید زبان ها ، تجربه بهتر و هوشمندانه تر IDE  ، پیشرفت عملیات debug  وآنالیز ، تشخیص و تحلیل کد هاست.امکانات  جدید visual studio 2015  در زیر آورده شده است:
-    پیشرفت IDE
-    امکانات جدید c#
-    امکانات جدید در visual basic
-    پیشرفت کار debug
-    آنالیزکننده مشکلات و کد ها
پیشرفت IDE  مایکروسافت:
در visual studio 2015  ،  تمرکز #c  و visual basic  روی IDE  بیشتر شده است.امکانات کلیدی جدید آن عبارتند از:
-    Refresh  کردن  IDE اصلی
-     Code fix ها و refactoring
-    Inline rename
Refresh  کردن  IDE اصلی :
درکنفرانس vsconnect  در مورد IDE های c#   و Visual Basic صحبت شد.این IDE  ها هزاران امکانات جدیدی را که برنامه نویسان هرروز از آن استفاده می کنند را همانند  highlight  کردن syntax  ها و refactor  را پشتیبانی می کند.
بیایید با استفاده از یک مثال به IDE  جدید نگاهی بیندازیم:
Tooltip  های رنگی:
در visual studio 2015  ، tooltip   برای فراهم کردن بهتر مفهوم ، کد را به صورت رنگی و به صورت کامل نمایش می دهد.


Code fix  ها و refactoring

(refactoring به روش های اعمال تغییر (اصلاح یا افزودن قابلیت) در ساختار کدهای موجود می گویند، بصورتی که پس از اعمال تغییر کدهای جدید حاوی error نباشند (سینتکس و کامپایل) و همچنین functionality نرم افزار تغییر نکرده باشد!)


هنگامی که

ادامه مطلب...
۱۳ آذر ۹۳ ، ۱۷:۴۷ ۲ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

Interface ها در سی شارپ

وقتی می خواهیم interface را تعریف کنیم در واقع یک سری از قوانین را توضیح می دهیم.

یک class می تواند قوانینی را  که  توسط interface مشخص شده دنبال کند.

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

شما می توانید برای تعریف interface  مانند زیر عمل کنید:

public interface <interface name>
{
	    //Specify the Contract
}

بیایید فرض کنیم یک interface  از یک گوشی قدیمی مدل Nokia وجود دارد که

Interface آن به شکل زیر است:

public interface INokiaOld
{
	    void SendSMS();
	    void HoldCall();
}

کد بالا مشخص کرده که تمام کلاس هایی که interface،INokiaOld را پیاده سازی می کنند باید قابلیت های SendSMSو HoldCall را داشته باشند.

و این در حالی است که چگونگی پیاده سازی این عملکردها چندان مهم نیست.

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

قوانین می گویند اگر

ادامه مطلب...
۱۷ آبان ۹۳ ، ۲۲:۰۸ ۱ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

تفاوت زبان برنامه نویسی #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++ قویترین زبان دنیاست. البته دوستان میتونن در صورت تمایل درخواست پستهای بیشتر و مطالب پیشرفته تری از  C#رو بزارن تا منم یه سری مطالب جدیدتر و قشنگتریو ازاین زبان برنامه نویسی تو وبم قرار بدم.

۰۵ شهریور ۹۳ ، ۱۸:۲۱ ۲ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

بدست آوردن پورت USB در سی شارپ

در این اینجا قصد داریم لیستی از Port ها USB فعال در سیستم رو بدست بیاریم

private static void Main(string[] args)
        {
            var usbDevices = GetUSBDevices();

            foreach (var usbDevice in usbDevices)
            {
                Console.WriteLine("Device ID: {0}", usbDevice.DeviceID);

            }

            Console.Read();
        }

        private static List<USBDeviceInfo> GetUSBDevices()
        {
            List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

            ManagementObjectCollection collection;
            using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub"))
                collection = searcher.Get();

            foreach (var device in collection)
            {
                devices.Add(new USBDeviceInfo(
                                (string) device.GetPropertyValue("DeviceID")
                                ));
            }

            collection.Dispose();
            return devices;
       }
۱۸ تیر ۹۳ ، ۱۹:۵۵ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

ORM چیست؟

ORM یا Object-relational mapping یک تکنیک برنامه نویسی برای ارتباط بین دیتا بیس و برنامه شئ گرای ما می باشد. مهمترین مزیت ORM ها این است که عملیات CRUD یا Create-Read-Update-Delete را به راحتی برای ما انجام می دهند.

زمان به ما ثابت کرده که پایگاه داده‌های رابطه‌ای ساختار مناسبی برای ذخیره‌سازی داده‌ای هستند، همچنین به این نتیجه رسیده‌ایم که برنامه‌نویسی شیءگرا یک رویکرد بسیار خوب و قوی برای پیاده‌سازی سیستم‌های بسیار پیچیده می‌باشد.

ORM عملا یک لایه

ادامه مطلب...
۰۷ مرداد ۹۲ ، ۱۸:۲۴ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

کلمات کلیدی در C#

با کلیک بروی لینک زیر می توان مرجع کاملی از کلمات کلیدی موجود در سی شارپ را بدست آورد.

مرجع کامل کلمات کلیدی در سی شارپ

۰۲ مرداد ۹۲ ، ۱۷:۱۵ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

دانلود آموزش ساختمان داده ها در C#

با کلیک بروی لینک زیر می توانید اسلاید های ساختمان داده ها در C# را دانلود کنید.

دانلود آموزش ساختمان داده ها در C#

۰۶ ارديبهشت ۹۲ ، ۱۲:۳۲ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

دانلود آموزش پردازش تصویر در C#

دوستانی که به پردازش تصویر در c# علاقه دارند، با کلیک بروی لینک زیر می توانید این کتاب رو دانلود کنید. با تشکر...

دانلود آموزش پردازش تصویر  در C#

۰۶ ارديبهشت ۹۲ ، ۱۲:۱۷ ۱ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

دانلود کتاب A Programmer’s Guide to C# 5.0

کتاب سی شارپ 5 - بعد از معرفی سی شارپ نسخه ۵ ، بلافاصله کتابهایی در این زمینه منتشر شدند که از این کتابها "راهنمای برنامه نویسان سی شارپ ۵٫۰ " چاپ چهارم است که با هدف کمک به توسعه دهندگان نرم افزاری که می خواهند مهارتهای خود را با استفاده از زبان سی شارپ توسعه دهند منتشر شده است. این کتاب بدون نیاز به اطلاعات قبلی درباره دات نت شما را در توسعه نرم افزارهای خود کمک کرده و تمام جنبه های ارائه شده رو توضیح می دهد.

آنچه که شما در این کتاب یاد خواهید گرفت:

·         استفاده از ویژگی های تاثیر گذار سی شارپ

·          استفاده از جدیدترین ویژگیهای سی شارپ ۵٫۰ در مشکلات کدنویسی

·         ساده سازی کد پایگاه داده با  LINQ

·          استفاده از ویژگی Async و کتابخانه وظایف موازی جهت بهبود عملکرد برنامه

لینک دانلود


۱۰ فروردين ۹۲ ، ۲۱:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

پردازش موازی در دات‌نت

در برنامه‌نویسی همروند شما چند Task را که هیچ رابطه‌ای بین آنها نیست در یک محیط همروند اجرا می‌کنید. این موضوع مشکلات خود را دارد، Task‌ها از منابع مشترک استفاده می‌کند و این منابع را بین خود به اشتراک

می‌گذارند. این امر مشکل منابع اشتراکی را به وجود می‌آورد، در واقع Task‌های شما به صورت Thread‌هایی است که از منابع مشترک استفاده می‌کند و این Thread‌ها مشکل deadlock و data race را به وجود می‌آورد.

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

به قوت خود باقی بماند؛ اما شما چند وظیفه مرتبط به هم ایجاد کرده‌اید و مشکلی مانند deadlock هنوز به وقت خود باقی است. مساله مهم‌تر این است که خطایابی این سیستم نسبت به حالت قبلی پیچیده و سخت‌تر

است و همین طور ارتباط بین این وظایف و انتقال اطلاعات بین آنها. اما نگران نباشید اینجاست که Parallel Fx به کمک شما می‌آید و مشکلات شما را حل می‌کند.

در Parallel Fx کلاس Task جای Thread را گرفته و امکان اجرای موازی کارها را به شما می‌دهد و شما می‌توانید کار خود را به مراتب سریع‌تر از چند نخی و حتی برنامه‌نویسی غیرهمزمان انجام دهید،

حال بگذارید چند مثال در این مورد بنویسیم تا با این کتابخانه و کار با آن آشنا شویم

ادامه مطلب...
۱۵ بهمن ۹۱ ، ۱۰:۱۵ ۱ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی