مهدی عزیزی

۱۹ مطلب با کلمه‌ی کلیدی «C#» ثبت شده است

تفاوت Overloading و Overriding در سی شارپ

Overloading زمانی است که شما چند متد همنام در یک محدوده (scope) با امضاهای (signatures) متفاوت دارید .
همچنین Overloading چند ریختی زمان کامپایل (Compile Time Polymorphism) می باشد .

//Overloading
public class test
{
    public void getStuff(int id)
    {}
    public void getStuff(string name)
    {}
}

Overriding یک اصل یا قانون است که به شما اجازه می دهد تا قابلیت های متدها را در کلاس های مشتق شده تغییر دهید
همچنین Overriding چند ریختی زمان اجرا (Run Time Polymorphism) می باشد.

//Overriding
public class test
{
        public virtual getStuff(int id)
        {
            //Get stuff default location
        }
}

public class test2 : test
{
        public override getStuff(int id)
        {
            //base.getStuff(id);
            //or - Get stuff new location
        }
}
۰۴ اسفند ۹۳ ، ۰۰:۰۰ ۴ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

امکانات جدید #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;
       }
۱۸ تیر ۹۳ ، ۱۹:۵۵ ۰ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

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

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

  • ساخت یافته که متضاد آن عدم ساخت یافته است.
    • ساخت یافته : ماژولار - شی گرا
    • غیر ساخت یافته : آرایه ای ، تکراری

  • دستوری(imperative) که متضاد آن توصیفی(declarative) است.
    • دستوری : Procedural
    • توصیفی : functional - logic

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

Type Safety

type safety یا به فارسی "اطمینان نوع" قابلیت یا ویژگی یک زبان برنامه نویسی برای جلوگیری یا کاهش رخدادن خطاهای "عدم تطابق نوع" یا Type Errors در برنامه است. عدم تطابق نوع، به رفتار ناخواسته و نامطلوب یک برنامه به دلیل اختلاف در انواع داده ای در متغیر ها، ثابت ها یا توابع برنامه، گفته می شود. برای مثال رفتار کردن با یک متغیر نوع صحیح (integer) مانند یک متغیر نوع ممیز شناور (float).

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

#C برخلاف ++C یک زبان Type-Safe است یعنی در #C زمانی که نوع داده ای یک متغیر مشخص شد آن متغیر دیگر نمیتواند به نوع داده ای دیگری تبدیل شود علاوه بر این محدودیتهای دیگری نیز هنگام تبدیل یک نوع داده ای به نوع دیگر وجود دارد که باعث میشود کدهای #C نسبت به کدهای ++C طولانی تر بنظر برسد ولی با این حال کدهای #C از پایداری بیشتری برخوردارند و خطایابی آن آسانتر است.

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

کلیدهای میانبر در Visual Studio

لطفا توجه داشته باشید: در صورتی که با فشردن این کلیدها هیچ عملی رخ نداد حتما مسیر ذیل را پیگیری نمایید:

 Tools منوی > Import and Export Settings گزینه > Reset All Settings > No, just reset settings,... > Visual C# Development Settings > Finish

توضیحات نام کلید

کلید های میانبر عمومی

انتقال به یک خط خاص
با فشردن این کلید و نوشتن شماره خط در پنجره ظاهر شده، مکان نما به آن خط منتقل می گردد.
Ctrl+G
جستجوی نموی  یا جستجوی لحظه به لحظه
این کلید را فشار دهید و شروع به تایپ کنید. در حین تایپ جستجو انجام می شود و عبارات مشابه متن تایپ شده شما را می یابد.
Ctrl+I
یافتن بلاک معادل
اگر مکان نما در کنار [, ], (, ), {, } قرار بگیرد، با فشردن این کلید مکان نما به کاراکتر معادل آن منتقل می شود. یعنی اگر مکان نما در کنار پرانتز باز قرار داشته باشد با فشردن این کلید مکان نما به پرانتز بسته معادل آن منتقل می شود.
Ctrl+]
مرتب کردن خطوط نامرتب متن انتخاب شده.
همانطور که می دانید Visual Studio به صورت خودکار خطوط برنامه را مرتب می نماید. در برخی مواقع مثل زمانی که خطایی در کد وجود داشته باشد، خطوط برنامه مرتب نمی شوند. در این زمان شما می توانید با فشردن این کلید متن انتخاب شده را مرتب نمایید.
Ctrl+E,F
یا
Ctrl+K,F
مرتب کردن خطوط نامرتب کل برنامه.
همانطور که می دانید Visual Studio به صورت خودکار خطوط برنامه را مرتب می نماید. در برخی مواقع مثل زمانی که خطایی در کد وجود داشته باشد، خطوط برنامه مرتب نمی شوند. در این زمان شما می توانید با فشردن این کلید کل خطوط برنامه را مرتب نمایید.
Ctrl+E,D
یا
Ctrl+K,D
ادامه مطلب...
۱۰ آبان ۹۲ ، ۱۳:۰۳ ۸ نظر موافقین ۰ مخالفین ۰
مهدی عزیزی

ORM چیست؟

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

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

ORM عملا یک لایه

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

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

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

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

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