کلاسی به نام 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();
اگر در مثال قبل، حجم تایپ 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
به عنوان مثال یک لیست به نام 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
وقتی می خواهیم یک آرایه با نام myArray از نوع String تعریف کنیم که طولش 4 تا باشد تعریف را به صورت زیر می نویسیم:
string[]myArray = new string[4];
به عنوان مثال یک آبجکت داریم با نام myObject که یک property از نوع String دارد که نامش name است و می خواهیم روی این name عملیاتی انجام بدهیم. حتماً باید قبل از انجام آن عملیات کنترل کنیم که این name مقدارش null نباشد.
if (!string.IsNullOrEmpty(myObject.name))
var x = myObject. name.Split('/');