سی شارپ

آموزش زبان برنامه نویسی سی شارپ – #C – زبان برتر شرکت مایکروسافت و مادر زبان‌های برنامه‌نویسی NET. ، زبان سی شارپ ، سی شارپ آموزش


زنگ سی شارپ – قسمت پنجاه (قسمت پایانی)

مسعود درویشیان ۵۸ دیدگاه سی شارپ سه شنبه, ۲۷ام اسفند , ۱۳۹۲ 53316 بازدید

زنگ سی‌شارپ - قسمت پنجاه

استفاده از Method Group Conversion

از نسخه‌ی ۲، یک ویژگی به سی‌شارپ اضافه شد که به‌شکل قابل توجهی اختصاص‌دهی method‌ به delegate را ساده می‌کرد. این ویژگی method group conversion نام دارد و به شما اجازه می‌دهد تا به سادگی، نام یک متد را به delegate اختصاص دهید بدون این‌که نیاز داشته باشید از کلمه‌ی کلیدی new استفاده کنید یا constructor‌ مربوط به delegate را فراخوانی کنید.

زنگ سی شارپ – قسمت پنجاه (قسمت پایانی)

زنگ سی شارپ – قسمت چهل و نهم

مسعود درویشیان ۲۱ دیدگاه سی شارپ چهارشنبه, ۳۰ام بهمن , ۱۳۹۲ 18792 بازدید

زنگ سی‌شارپ - قسمت چهل و نهم

Catch کردن exception کلاس‌های مشتق شده

هنگام گرفتن exception type هایی که شامل base و derived class هستند، باید به چیدمان و نحوه‌ی قرار گرفتن دنباله‌ی catch ها دقت کنید زیرا یک catch برای یک base class با تمام کلاس‌های مشتق شده از آن، تطابق دارد. برای مثال، به‌دلیل این‌که کلاس Exception، کلاس والد تمام exception های دیگر است، گرفتن آن موجب گرفتن تمام exception های موجود می‌شود. البته (همان‌طور که قبلاً توضیح داده شد) استفاده از catch بدون مشخص کردن exception type، یک راه دیگر (و خواناتر) برای گرفتن تمامی exception ها است. با این حال، باید دقت کنید که گرفتن derived class exceptions (مخصوصاً) هنگامی‌که exception های خودتان را می‌سازید، از اهمیت بالایی برخوردار است.

زنگ سی شارپ – قسمت چهل و نهم

زنگ سی شارپ – قسمت چهل و هشتم

مسعود درویشیان ۱۶ دیدگاه سی شارپ سه شنبه, ۱۰ام دی , ۱۳۹۲ 19860 بازدید

زنگ سی‌شارپ - قسمت چهل و هفتم

نگاهی دقیق‌تر به Exception Class

تا به این‌جا، ما exception ها را می‌گرفتیم اما هیچ‌کاری با شیء exception نمی‌کردیم. همان‌طور که پیش‌تر توضیح داده شد، قسمت catch به شما اجازه می‌دهد تا exception type و variable را مشخص کنید. Variable شامل یک reference متصل به exception object است. از آن‌جایی که تمامی exception ها از Exception Class ارث‌بری کرده‌اند، همه‌ی آن‌ها به اعضای Exception Class دسترسی دارند. در این‌جا با تعدادی از مفیدترین اعضای Exception Class آشنا خواهید شد.

زنگ سی شارپ – قسمت چهل و هشتم

زنگ سی شارپ – قسمت چهل و هفتم

مسعود درویشیان ۱۴ دیدگاه سی شارپ دوشنبه, ۲۵ام آذر , ۱۳۹۲ 18164 بازدید

زنگ سی‌شارپ - قسمت چهل و ششم

گرفتن تمام exception ها

بعضی وقت‌ها، ممکن است بخواهید تمام exception ها را بدون در نظر گرفتن نوع آن‌ها، بگیرید. برای انجام این‌کار، یک مدل catch مشخص می‌کنید که exception type و exception variable ندارد.

فرم کلی آن به‌شکل زیر است:

catch {
    // handle exceptions
}

خط کد بالا باعث به‌وجود آمدن یک catch all exception handler می‌شود و تضمین می‌کند که تمامی exception های به‌وجود آمده گرفته شوند.

زنگ سی شارپ – قسمت چهل و هفتم

زنگ سی شارپ – قسمت چهل و ششم

مسعود درویشیان ۸ دیدگاه سی شارپ دوشنبه, ۱۸ام آذر , ۱۳۹۲ 17355 بازدید

زنگ سی‌شارپ - قسمت چهل و ششم

در قسمت‌های قبل با یکی از مهم‌ترین بخش‌های سی‌شارپ، interface، آشنا شدید. در این قسمت به مبحث بسیار مهم exception handling که یک سیستم خطاگیری بسیار قدرتمند در سی‌شارپ است، می‌پردازیم.

زنگ سی شارپ – قسمت چهل و ششم

زنگ سی شارپ – قسمت چهل و پنجم

مسعود درویشیان ۱۵ دیدگاه سی شارپ چهارشنبه, ۱۳ام آذر , ۱۳۹۲ 23511 بازدید

زنگ سی‌شارپ - قسمت چهل و پنجم

بین Interface و Abstract Class کدام‌یک را انتخاب کنیم؟

یکی از قسمت‌های مهم برنامه‌نویسی سی‌شارپ دانستن این موضوع است، هنگامی‌که قصد دارید قابلیت‌های یک کلاس را شرح دهید، چه زمانی از interface و چه زمانی از abstract class باید استفاده کنید درحالی‌که قسمت اجرایی ندارید. قانون کلی بدین صورت است که هرگاه بخواهید مفهوم کلی را شرح دهید و فقط به انجام شدن کارها تاکید داشته باشید و در واقع چگونه‌گی انجام شدن آن برای شما اهمیت نداشته باشد، باید از interface استفاده کنید. اگر نیاز دارید که بعضی از جزئیات اجرا شدن را از قبل وارد کنید، آن‌گاه باید abstract class را مورد استفاده قرار دهید.

زنگ سی شارپ – قسمت چهل و پنجم

زنگ سی شارپ – قسمت چهل و چهارم

مسعود درویشیان ۱۲ دیدگاه سی شارپ شنبه, ۹ام آذر , ۱۳۹۲ 18721 بازدید

زنگ سی‌شارپ - قسمت چهل و چهارم

استفاده از reference variable های interface

شما در سی‌شارپ می‌توانید یک reference variable از interface تعریف کنید. به عبارت دیگر، در سی‌شارپ می‌توانید interface reference variable بسازید. این‌چنین متغیری می‌تواند به هر شیء‌ای که interface اش را اجرا می‌کند، رجوع کند. هنگامی‌که متد یک شیء را از طریق interface reference صدا می‌زنید، آن نسخه از متد که شیء مربوط به آن، interface را اجرا کرده است، اجرا می‌شود. این پروسه شبیه به استفاده از base class reference برای دسترسی به شیء derived class است (که در قسمت‌های قبلی با آن آشنا شدید).
زنگ سی شارپ – قسمت چهل و چهارم

زنگ سی شارپ – قسمت چهل و سوم

مسعود درویشیان ۲۱ دیدگاه سی شارپ سه شنبه, ۵ام آذر , ۱۳۹۲ 21291 بازدید

زنگ سی‌شارپ - قسمت چهل و سوم

در قسمت‌های قبل با ارث‌بری آشنا شدید، در این قسمت با Interface که یکی از مهم‌ترین ویژگی‌های سی‌شارپ است، آشنا می‌شوید. یک interface مجموعه‌ای از متدها را تعریف می‌کند که توسط یک کلاس اجرا خواهند شد. یک interface هیچ متدی را اجرا نمی‌کند، از این‌رو، interface یک سازه‌ی کاملاً منطقی است که فقط نشان‌دهنده‌ی  قابلیت و عملکرد است و هیچ قسمت اجرایی ندارد.

زنگ سی شارپ – قسمت چهل و سوم

زنگ سی شارپ – قسمت چهل و دوم

مسعود درویشیان ۸ دیدگاه سی شارپ پنج شنبه, ۴ام مهر , ۱۳۹۲ 15636 بازدید

استفاده از sealed برای جلوگیری از ارث‌بری

با این‌که inheritance بسیار مفید و کاربردی است، گاهی نیاز است که از انجام شدن آن پیش‌گیری کنید. این‌که در کجا و در چه شرایطی از انجام inheritance جلوگیری کنید، بستگی به مساله و منطق خودتان دارد. در سی‌شارپ با استفاده از کلمه‌ی کلیدی sealed به راحتی می‌توانید مانع انجام شدن inheritance شوید.

زنگ سی‌شارپ - قسمت چهل و یکم

 واژه‌ی sealed به معنای مهر و موم شده است و با استفاده از آن اطمینان می‌یابید که از یک کلاس مهر و موم شده نمی‌توان ارث‌بری کرد. به‌منظور sealed کردن یک کلاس، کافی است که در ابتدای تعریف کلاس از کلمه‌ی کلیدی sealed استفاده کنید. دقت داشته باشید که یک کلاس را نمی‌توان هم به‌صورت sealed و هم به‌صورت abstract تعریف کرد چراکه کلاس abstract به تنهایی کامل نیست و برای این‌که اجرای کاملی داشته باشد وابسته به کلاس‌های مشتق‌شده از خودش است.

زنگ سی شارپ – قسمت چهل و دوم

زنگ سی شارپ – قسمت چهل و یکم

مسعود درویشیان ۱۵ دیدگاه سی شارپ جمعه, ۲۲ام شهریور , ۱۳۹۲ 18603 بازدید

در قسمت قبل اندکی با virtual method آشنا شدید. همان‌طور که ذکر شد، پروسه‌ی تعریف مجدد virtual method در derived class را method overriding می‌نامند.

زنگ سی‌شارپ - قسمت چهل و یکم

همان‌طور که گفته شد، virtual method در base class با کلمه‌ی‌کلیدی virtual تعریف می‌شود. هنگامی‌که یک virtual method در derived class مجدداً تعریف می‌شود، باید از override modifier استفاده ‌کنید و هنگام override کردن یک متد، باید اسم متد، return type و پارامترهای آن را مطابق با virtual method بنویسید.

زنگ سی شارپ – قسمت چهل و یکم

زنگ سی شارپ – قسمت چهل‌ام

مسعود درویشیان ۶ دیدگاه سی شارپ جمعه, ۸ام شهریور , ۱۳۹۲ 10833 بازدید

زنگ سی‌شارپ - قسمت چهل‌ام

آیا سی‌شارپ یک زبان strongly typed است یا weakly typed؟!

احتمالاً این اصطلاحات را بین برنامه‌نویسان زیاد شنیده‌اید اما در واقع این اصطلاحات بی‌معنی هستند و بهتر است که از گفتن آن اجتناب ورزید. ویکی‌پدیا معانی متفاوتی را برای strongly typed لیست کرده که تعدادی از آن‌ها یکدیگر را نقض می‌کنند. هر زمان که دو نفر در مورد strongly typed و weakly typed صحبت می‌کنند احتمالاً معانی متفاوتی از این اصطلاحات در ذهن‌شان نقش بسته است بنابراین هردو برداشت متفاوتی از این اصطلاحات دارند و از طرفی گمان می‌کنند که هردو منظورشان یکسان است. در واقع یک زبان نسبت به یک زبان دیگر، در صورتی‌که در type system) type system مجموعه‌ای از قوانین در زبان برنامه‌نویسی است که در صورت عدم پیروی از آن‌ها با خطا مواجه خواهید شد) محدودیت بیشتری را اعمال کند،  بیشتر strongly typed است و از طرف دیگر، آن زبان که محدودیت کمتری در type system در مقایسه با یک زبان دیگر دارد، نسبت به آن زبان، بیشتر weakly typed است.

بنابراین گفتن این‌که آیا سی‌شارپ (یا هر زبان دیگر) strongly typed یا weakly typed است، صحیح نیست زیرا این موضوع بستگی به زبانی که مقایسه را با آن انجام می‌دهید و همچنین بستگی به دید کسی که در این مورد صحبت می‌کند، دارد و عملاً بهتر است به‌جای استفاده از این اصطلاحات از محدودیت‌ها و ویژگی‌های type system یک زبان صحبت کرد.

زنگ سی شارپ – قسمت چهل‌ام

زنگ سی شارپ – قسمت سی و نهم

مسعود درویشیان ۶ دیدگاه سی شارپ پنج شنبه, ۳۱ام مرداد , ۱۳۹۲ 11703 بازدید

زنگ سی‌شارپ - قسمت سی و هفتم

در قسمت قبل تا حدودی با ارث‌بری آشنا شدید. در این قسمت به‎ادامه‌ی مبحث ارث‌بری می‌پردازیم.
زنگ سی شارپ – قسمت سی و نهم

زنگ سی‌شارپ – قسمت سی و هشتم

مسعود درویشیان ۹ دیدگاه سی شارپ جمعه, ۲۵ام مرداد , ۱۳۹۲ 13323 بازدید

زنگ سی‌شارپ - قسمت سی و هفتم

Inheritance (وراثت، ارث‌بری)

فهمیدن و درک کردن کلاس‌ها به شما کمک می‌کند تا بتوانید اشیاء را دسته‌بندی و سازماندهی کنید. با دانستن inheritance می‌توانید این دسته‌بندی و سازماندهی را دقیق‌تر انجام دهید. برای مثال، اگر تا به‌حال در مورد Braford چیزی نشنیده باشید، تشکیل تصویر آن در مغزتان کار دشوار و سختی خواهد بود. وقتی می‌دانید که Braford یک حیوان است، تصویر آن می‌تواند راحت‌تر از قبل در ذهن شما مجسم شود. بعد از آن‌که دانستید این حیوان از نوع پستان‌دار است، تصویر آن در ذهن شما بیشتر شکل می‌گیرد و پس از آن‌که دانستید این حیوان یک گاو است، می‌توانید تقریباً به‌طور کامل آن را در ذهنتان مجسم کنید. وقتی‌که پی بردید Braford یک گاو است، ویژگی‌ها و مشخصاتی که در همه‌ی گاوها وجود دارند در ذهن شما مجسم می‌شوند. برای شناسایی یک Braford، تنها کافی است که جزئیات کوچکی مثل رنگ، نشانه‌ها و… را بدانید اما Braford ویژگی و مشخصات کلی خود را به‌ترتیب از حیوانات، پستان‌داران و گاوها به ارث برده است.

زنگ سی‌شارپ – قسمت سی و هشتم

زنگ سی شارپ – قسمت سی و هفتم

مسعود درویشیان ۶ دیدگاه سی شارپ شنبه, ۱۲ام مرداد , ۱۳۹۲ 10034 بازدید

زنگ سی‌شارپ - قسمت سی و هفتم

Recursion

Recurcion پروسه‌ی تکرار آیتم‌ها به‌صورت self-similar (خود متشابه) است. در ریاضیات یک شیء self-similar دقیقاً یا تقریباً شبیه بخشی از خودش است. self-similarity یکی از ویژگی‌های fractal (بَرخال، فرکتال) است. fractal ساختاری هندسی، متشکل از اجزایی است که با بزرگ کردن هر جزء به نسبت معین همان ساختار اولیه به‌دست می‌آید.

زنگ سی شارپ – قسمت سی و هفتم

زنگ سی شارپ – قسمت سی و ششم

مسعود درویشیان ۱۸ دیدگاه سی شارپ پنج شنبه, ۲۷ام تیر , ۱۳۹۲ 14190 بازدید

زنگ سی‌شارپ - قسمت سی و ششم

زنگ سی شارپ – قسمت سی و ششم

زنگ سی شارپ – قسمت سی و پنجم

مسعود درویشیان ۱۵ دیدگاه سی شارپ چهارشنبه, ۱۹ام تیر , ۱۳۹۲ 14674 بازدید

زنگ سی‌شارپ - قسمت سی و پنجم

Conversion Operators

در قسمت قبل اندکی با conversion operators آشنا شدید و همین‌طور چگونگی استفاده از implicit conversion را فرا گرفتید. برای تبدیل implicit به‌صورت زیر عمل می‌کردیم:

using System;
class TwoD
{
    int X, Y;
    public TwoD()
    {
        X = Y = 0;
    }
    public TwoD(int a, int b)
    {
        X = a;
        Y = b;
    }
    public static implicit operator int(TwoD op)
    {
        return op.X * op.Y;
    }
}
class OpOvDemo
{
    static void Main()
    {
        TwoD ob1 = new TwoD(2, 2);
        int i = ob1;
        Console.WriteLine(i);
    }
}

زنگ سی شارپ – قسمت سی و پنجم



کلیه حقوق مادی و معنوی برای وب سایت وب تارگت محفوظ است ©2017 وب‌تارگت

استفاده از مطالب وب سایت در سایر وب سایت‌ها و نشریات چاپی با ذکر منبع آزاد است.