![]() |
|
|||||||
| قسم لغة Microsoft Visual C#.NET هذا القسم مخصص للمواضيع والاستفسارات حول لغة #C الجديدة والقوية من مايكروسوفت والحائزة على شهرة عالمية كبيرة تنافس Visual Basic .net |
| آخر 10 مشاركات |
|
|
|
LinkBack | أدوات الموضوع | انواع عرض الموضوع |
|
|
#1 (permalink) |
|
عميد كلية
الجنس: ذكـــر الجنسية: سوريا بلد الإقامة: سوريا الوظيفة: تكنلوجيا المعلومات - برمجة المؤهل الدراسي: البكلوريوس التخصص العلمي: تكنلوجيا المعلومات - هندسة حاسب آلي كيف عرفت عن موقعنا: اعلان عن موقعكم في موقع اخر تاريخ التسجيل: Aug 2007
المشاركات: 408
شكراً: 34
تم شكره 8 مرة في 5 مشاركة
معدل تقييم المستوى:2
![]() |
بعض ميزات Framework 3.5: Visual Studio 2008 Orcas
مرحبا،،
دعنا مباشرة نبدأ الحديث عن بعض هذه التقنيات بدون أية مقدمات 1) Automatic Properities: نعلم انه إذا أردنا إنشاء صف Point يحتوي على خاصيتين هما X و Y فإننا سوف نكتب الكود التالي: كود:
1. public class Point
2. {
3. private int _x;
4. private int _y;
5.
6. public int X
7. {
8. get { return _x; }
9. set { _x = value; }
10. }
11.
12. public int Y
13. {
14. get { return _y; }
15. set { _y = value; }
16. }
17. }
كود:
1. public class Point
2. {
3. public int X{ get; set; }
4. public int Y { get; set; }
5. }
2)Local Variable Type Inference (استنباط أنوع المتحولات المحلية): ماذا يعني استنباط أنواع المتحولات المحلية، دعني أوضح لك ذلك من خلال المثال التالي، إذا أردت إنشاء متحول من نوع عدد صحيح، وآخر من أجل عدد حقيقي وآخر من أجل تخزين سلسلة نصية ماذا تكتب؟ "طلب سخيف!!!" كود:
int n = 0; float f = 10.1F; string s = "Visual Studio Orcas 2008"; كود:
var n = 0; var f = 10.1F; var s = "Visual Studio Orcas 2008"; كود:
Console.WriteLine("n is: {0}", num.GetType());
Console.WriteLine("f is: {0}", f.GetType());
Console.WriteLine("s is: {0}", s.GetType());
هل اقنعنا الان؟ ("طيب شو هالميزة يلي ما لا طعمة كان بإمكاني أن أصرح عن هذه المتحولات بشكل الاعتيادي ويكفي") سوف تكتشف فائدة الميزة هذه في الفقرات التالية. 3) التصريح عن الكائنات والمجموعات Object Initializers & Collection Initializers: إذا أخبرتك يا عزيزي المبرمج أتذكر الصف Point السابق؟ أريد منك أن تنشئ كائنا منه وتضبط قيم خصائصة بقيمة الصفر. -شو هاشغلة ميت طلب مثل هالطلب- فستكتب الشكل التالي إلا إذا كنت قد سبقتني إلى التعرف ما سوف أخبرك عنه. كود:
Point p = new Point(); // var p = new Point(); p.X = 0; p.Y = 0; كود:
Point p = new Point() { X = 0, Y = 0 };
كود:
List<Point> points = new List<Point>() {
new Point() { X = 1, Y = 1 },
new Point() { X = 2, Y = 3 }
};
تمكنك اللغة الآن من التصريح عن أنواع جديدة -ليكون تمزح- بدون أن تقوم بإنشاء صف جديد -يعني كيف- لو أردنا إنشاء كائن يمثل نقطة بدون أن تقوم بإنشاء الصف السابق Point فستقول لي مستحيل، ولكنني سأقول لك لا شيء مستحيل أبدا، لاحظ الشيفرة التالية التي ستقوم بتأدية نفس الغرض: كود:
var p = new { X = 1, Y = 2 };
Console.WriteLine("p.X = {0}", p.X);
Console.WriteLine("p.Y = {0}", p.Y);
5)تعابير لامدا Lambda Expressions: في C# 2.0 يوجد الاجراءات المجهولة (العامة Generic)، فمثلا في C# 2.0 يمكن كتابة الشيفرة التالية: كود:
class Program
{
delegate R MyDelegate<A, R>(A arg);
MyDelegate<int, bool> IsPositive = delegate(int num)
{
return num > 0;
};
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine(p.IsPositive(2));
Console.WriteLine(p.IsPositive(-2));
}
}
كود:
class Program
{
delegate R MyDelegate<A, R>(A arg);
MyDelegate<int, bool> IsPositive1 = num => num > 0;
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine(p.IsPositive(2));
Console.WriteLine(p.IsPositive(-2));
}
}
ماذا يعني هذا الكلام –وياعيني على هالكلام- لو طلبت منك أن تنشىء لي تابع يقوم بالتحقق من عنوان ايميل هل هو صحيح أم لا، -مافي أسهل من هذا الطلب باستخدام التعابير النظامية- تكتب التابع التالي: كود:
public static class StringExtenstion
{
public static bool IsValidEmailAddress(string s)
{
Regex regex =
new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
return regex.IsMatch(s);
}
}
class Program
{
static void Main(string[] args)
{
string email = "Abdulkarim.Kanaan@gmail.com";
bool isValidate = StringExtenstion.IsValidEmailAddress(email);
Console.WriteLine(isValidate);
}
}
كود:
public static class StringExtenstion
{
public static bool IsValidEmailAddress(this string s)
{
Regex regex =
new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
return regex.IsMatch(s);
}
}
class Program
{
static void Main(string[] args)
{
string email = "Abdulkarim.Kanaan@gmail.com";
bool isValidate = StringExtenstion.IsValidEmailAddress(email);
Console.WriteLine(isValidate);
Console.WriteLine(email.IsValidEmailAddress());
}
}
7)صيغ الاستعلام Query Syntax: ربما عندما تقرأ هذا العنوان سيخيل لك أنني سأتحدث عن SQL، ولكن دعني أقل لك أنك قد أخطأت ما سأتحدث عنه بشكل مختصر هو ما يعرف LINQ إختصار لـ Langauge Integrated Query–ممكن أن يكون هناك مقالة أخرى توضح هذه الميزة بشكل أوسع- ، لأبسط لك الأمور بأبسط شكل ممكن، لو أخبرتك بأن لدي مصفوفة من سلاسل نصية تمثل أسماء أصدقائي و أود أن أستخرج جميع الأسماء التي تبدأ بحرف 'F'، فربما تقول بسيطة نعمل حلقة ونفحص إذا كانت بداية الاسم تبدأ بهذا الحرف وانتهت القصة، ولكن لو علمت ما في وراء هذا العنوان لعلمت أن ما تعمله هو قصة بحد ذاته، ولكن مع استخدام تقنية LINQ سيكون عمل المطلوب من أبسط مل يكون، تأمل الشيفرة التالية يارعاك الله: كود:
static void Main(string[] args)
{
string[] frindNames = new string[] {
"Fadi",
"Ahmad",
"Rami",
"Fofo",
"Toto"};
var names = from f in frindNames
where f.StartsWith("F")
select f;
foreach (string n in names)
{
Console.WriteLine(n);
}
}
وشكرا |
|
|
|
| مرحبا عزيزي الزائر |
| لمشاهدة باقي ردود هذا الموضوع, من فضلك قم بتسجيل الدخول او اضغط هنا للتسجيل. |
|
| أدوات الموضوع | |
| انواع عرض الموضوع | |
|
|
|
|
|