products and technologies version - از کتاب Manning.C.Sharp.in.D

#C ورژن های 1.0، 2.0 , 3.0 دارد و ورژن های دات نت هم از 1 تا 3.5 هستند. اینکه هر ورژن دات نت با کدام ورژن #C و VisualStudio منطبق است، در جدول زیر آمده است:

استفاده از Linq در 3.0#C-از کتاب Manning.C.Sharp.in.Depth

  در C#3.0 امکان استفاده از LINQ وجود دارد. به عنوان مثال لیستی با مشخصات زیر داریم:

  • نام لیست Products است.
  •   اعضای این لیست از تایپ کلاس Product  می باشند.
  • در کلاس Product یک فیلدی به نام Price وجود دارد که از تایپ int است.
  • اگر بخواهیم اعضایی از این لیست را به دست بیاوریم که فیلد price آنها مقداری بیشتر از 100  داشته باشد با استفاده از Linq یک Query به صورت زیر می نویسیم:   

   var filterd = from Product p in products where p.price >100 select p;

         حال محتویات filterd شامل Product هایی است که price آنها بیشتر از 100 است.

خطای synonym translation is no longer valid در Oracle

               اگر در زمان استفاده از یک Synonym ای که در Oracle ایجاد شده است، خطای زیر دریافت شود، مشکل این است که آبجکتی که این Synonym به آن Reference دارد، صحیح تعریف نشده است.

synonym translation is no longer valid

استفاده از AutoProperty در #C

              تعریف یک property با نام Name به صورت زیر انجام می شود:

string name;

public string Name

{

get { return name; }

set { name = value}

}

در این حالت، فیلد name که private نیز می باشد ، backing Field نامیده می شود.

اگر قرار است که کنترل خاصی در زمانget و یا Set اعمال نشود، بهتر است از Auto property استفاده شود که این امکان Auto property قبل از   .Net 3.0 وجود نداشته است.  

با استفاده از Auto Property این کد را می توان به صورت زیر نوشت:

Public string Name { get;set;}

در این صورت  خود کامپایلر یک backing Field بدون نام برای این get و set ایجاد می کند.

توصیه ای برای استفاده ا ز Collection ها در #C

  •  در زمان استفاده از Collection ها بهتر است از انواعی استفاده شود که با استفاده از Generic ها بتوان تایپ ورودی آن Collection را نیز تعیین کرد. زیرا در این صورت کامپایلر درکی از ورودی این Collection خواهد داشت و در صورتی که تایپی غیر از تایپ معرفی شده بخواهد به Collection اضافه شود، در زمان کامپایل، کامپایلر خطا را متوجه می شود.