چیزهایی که من از خواندن Specification C# یاد گرفتم

bookبعد از خواندن دوباره کتاب C# in depth از Jon Skeet من تصمیم گرفتم سعی کنم واقعاً Specification زبان C# رو بخونم …

به عنوان کسی که به طور شهودی هر چیزی رو یاد میگیره ، تصمیم گرفتم یک نسخه از کتابی رو خریداری کنم که با توضیحات و تفاسیر کامل تمام تاپیک های C# رو تا .NET 4 رو پوشش داده باشه – که کامنتهای خوبی از متخصص ها در این زمینه هم داشته باشه.

بعد از خواندن چند صفحه بسیار متعجب شدم از اینکه تا بحال فکر میکردم چیزهای کمی که بلدم وبه خیال خودم درست بودند ؛ تماماً غلط و اشتباه هستند  و تصمیم گرفتم که لیستی از چیزهای جدید رو که تا حالا از خواندن این کتاب یاد گرفتم بنویسم .

در این قسمت شما میتوانید چیزهای جدیدی که من از خواندن فصل اول یاد گرفتم رو ببینید :

تمام انواع Value Type در Stack ذخیره نمی شوند

بیشتر Developerها اعتقاد دارند که reference type ها در heap ذخیره میشوند درحالی که value type ها همیشه در stack – این قضیه همیشه هم درست نیست .

یک کلاس را در نظر بگیرید (که به عنوان یک reference type شناخته می شود) که یک عضو Integer ( که یه عنوان یک value type شناخته میشود) دارد ، کلاس در heap ذخیره میشود و بنابر این اعضای آن شامل value type هم در heap قرار میگیرند و فقط دیتای آنها به صورت by value کپی میشود .

 

 
class MyClass
{
    // stored in heap
    int a = 5;  
}

برای اطلاعات بیشتر پست Eric Lippert در این باره رو بخوانید .

«Protected internal» دیگه چیه ؟؟؟

اگر شما بیشتر از یک کلاس نوشته باشید ممکن است که ازسطح دسترسی های Public/internal و protected استفاده کرده باشید :

 
class MyClass
{
    // Can only be accessed by MyClass
    private object a;

    // Accessible by MyClass and classes that derive from it
    protected object b;

    // Accessible by this assembly
    internal object c;

    // Accessible by everyone 
    public object d;
}

پس حالا  protected internal چه معنایی میتواند داشته باشد ؟

بعضی افراد اعتقاد دارند که اعضایی که با «protected internal» مشخص میشوند تنها برای کلاسهایی که از  MyClass مشتق میشوند و کلاسهایی که در همان Assembly تعریف شده اند قابل دسترسی هستند ولی در حقیقت این معنا را دارد که کلاسهایی که از MyClass مشتق شده اند یا کلاسهایی که در همان assembly تعریف شده اند میتوانند دسترسی داشته باشند . پس مثل این است که internal  و protected را همزمان استفاده کنید – هنوز هم گیج هستید ؟

فقط انواع غیر قابل تغییر را به عنوان readonly بکار ببرید

تا بحال چند بار از یک فیلد readonly استفاده کردید؟

شما ممکنه با این تصور که مطمئن بشوید که یک فیلد بعد از مقدار اولیه گرفتن دیگر غیر قابل تغییر است از آن استفاده کرده باشید – ولی دوباره بیندیشید :

 
class Person
{
    static readonly Person Me = new Person("Dror", "Helper");
}

public void UpdateFail()
{
    // Compilation error!
    Person.Me = new Person("Kaiser", "Soze");
}

public void JustBecauseYouCan()
{
    // This would work!
    Person.Me.First = "Kaiser";
    Person.Me.Last = "Suze";
}

بله درسته ، در حالی که شما نمی توانید مقادیر جدید را با فیلد های readonly عوض کنید ولی میتوانبد آنرا Update کنید.

البته چیزهای بیشتری هست ، اما من این مثالها را انتخاب کردم چون اینها به من کمک کردند تا C# رو بهتر بفهمم .

امیدوارم چیزهای بیشتری مثل این رو که با خوندن کتاب به چشمم میخوره رو اضافه کنم – پس حتما این مباحث رو دنبال کنید .

کد نویسی خوبی داشته باشید . . .

ترجمه از :

Things I learnt reading C# specifications (#1)

دربارهٔ DeltaCode

Somewhere near the sky Far away from people Far away from noise Somewhere near yourself

Posted on فوریه 6, 2013, in CSharp and tagged , , , , , , , , , , , . Bookmark the permalink. بیان دیدگاه.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: