انتخاب ورژت دات نت فریم ورک در زمان ایجاد پروژه

               در زمان ایجاد پروژه جدید در Visual Studio 2008 می توان در گوشه ی سمت راست فرم،  ورژن دات نت فریم ورک را انتخاب کرد.

File->new -> project.      

استفاده از متغیرها یا متدهای کلاس پدر در کلاس فرزند-#C

        وقتی در کلاس فرزند هستیم و به عنوان مثال می خواهیم به متغیر MyVariable و یا متد MyMethod در کلاس پدر دست پیدا کنیم به صورت زیر می نویسیم:

base.myVariable

یا

base. MyMethod() 

یعنی کلمه کلیدی base مشخص می کند که منظور کلاس پدر است.      

کاربرد دو متد CreateInstance , GetType در #C

       کلاسی به نام MyClass داریم که اینترفیس MyInterface را پیاده سازی کرده است. نام کلاس را به متد GetType می دهیم و نام کامل یعنی QualifiedName آن کلاس را دریافت می کنیم. نام کامل کلاس را یعنی QualifiedName را به متد CreateInstance می دهیم تا که instance از کلاس را برای ما برگرداند. حال می توانیم این instance  را به آن اینترفیسی که این کلاس آن را پیاده سازی کرده است Cast می کنیم و متدهایش را فراخوانی کنیم.

کاربرد این مساله برای زمانی است که ما در پروژه نمی دانیم قرار است که از چه کلاسی instance ایجاد کنیم و نام آن کلاس از طریق دیتابیس یا ... به ما اعلام می شود.

var myClassQualifiedName = Type.GetType("MyProject.MyClass");

var instance = Activator.CreateInstance(myClassQualifiedName);

var instanceInterface = instance as MyInterface;

if (instanceInterface != null)

         instanceInterface.myMethod();

استفاده از Anonymous Type در Linq

                         اگر در مثال قبل، حجم تایپ MyClass زیاد باشد و ما بخواهیم که مقدار برگشتی به جای اینکه لیستی از تایپ MyClass باشد لیستی از یک کلاس جدید به نام MyNewClass باشد که فقط یک فیلد به نام Id دارد، در این صورت کوئری فوق به صورت زیر نوشته می شود:

var results = (from obj in myList

                where

                 obj. myfield > 100 

select  new  MyNewClass {

Id = obj.Id

}

).ToList(); 

اعضایی ازmyList که در این شرط صدق می کنند در لیستی به نام results بازگردانده می شوند. یعنی می توان results را به صورت زیر هم تعریف کرد.  

List<MyNewClass> results

کوئری با Linq در #C

                        به عنوان مثال یک لیست به نام myList داریم که از تایپ کلاس MyClass است و این کلاس یک  property به نام MyField دارد. اگر بخواهیم کوئری بنویسیم که اعضایی از این لیست را برگرداند که در آنها مقدار MyField بزرگتر از 100 باشد، با استفاده از linq این کوئری را به صورت زیر می توان نوشت:

var results = (from obj in myList

                where

                obj. myfield > 100  

select  obj).ToList(); 

اعضایی ازmyList که در این شرط صدق می کنند در لیستی به نام results بازگردانده می شوند. یعنی می توان results  را به صورت زیر هم تعریف کرد: 

List<MyClass> results