برمجة متقدمة سي شارب ماهو العام C# - Generics
ماهو العام C# - Generics
ماهو العام Generics ؟
تسمح لك بتأخير تخصيص نوع البيانات لعناصر البرنامج في الفئة أو الدالة .حتي يتم استخدامها في البرنامج. بمعنى أخر ان الفئة العام تسمح لك بإنشاء أي نوع من أنواع البيانات.
يمكنك كتابة مواصفات للفئة والدالة مع استبدال الباراميترات لنوع البيانات .عندما يصادف المترجم مشيد للفئة أو استدعاء دالة ، فإنه يولد كود لمعالجة نوع البيانات المحددة. وهذا مثال بسيط يساعد في فهم العام :
مثال على العام Generics
using System; using System.Collections.Generic; namespace GenericApplication { public class MyGenericArray<T> { private T[] array; public MyGenericArray(int size) { array = new T[size + 1]; } public T getItem(int index) { return array[index]; } public void setItem(int index, T value) { array[index] = value; } } class Tester { static void Main(string[] args) { //declaring an int array MyGenericArrayintArray = new MyGenericArray (5); //setting values for (int c = 0; c < 5; c++) { intArray.setItem(c, c*5); } //retrieving the values for (int c = 0; c < 5; c++) { Console.Write(intArray.getItem(c) + " "); } Console.WriteLine(); //declaring a character array MyGenericArray charArray = new MyGenericArray (5); //setting values for (int c = 0; c < 5; c++) { charArray.setItem(c, (char)(c+97)); } //retrieving the values for (int c = 0; c< 5; c++) { Console.Write(charArray.getItem(c) + " "); } Console.WriteLine(); Console.ReadKey(); } } }
ناتج مثال العام Generics
0 5 10 15 20 a b c d e
مميزات العام Generics
- فإنه يساعدك على تحقيق أقصى قدر من إعادة استخدام التعليمات البرمجية،وسلامة نوع البيانات ، والأداء.
- مكنك إنشاء فئات مجموعة عامة Generics. تحتوي على مكتبة NET فئة الإطار. وعدة فئات مجموعة عامة Generics جديدة في فضاء الأسماء System.Collections.Generic. يمكنك استخدام هذه فئات المجموعة العام بدلا من الفئات في فضاء الأسماء System.Collections.
- يمكنك إنشاء واجهات عامة Generics الخاصة بك، والفئات ، والدوال، والأحداث والتفويض.
- يمكنك إنشاء فئات عامة Generics مقيدة لتمكين الوصول إلى الدوال على أنواع بيانات معينة.
- يمكنك الحصول على معلومات حول أنواع تستخدم في نوع بيانات عامة Generics في وقت التشغيل عن طريق الانعكاس Reflection.
الدوال العامة Generic Methods
مثال على الدوال العامة
using System; using System.Collections.Generic; namespace GenericMethodAppl { class Program { static void Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } static void Main(string[] args) { int a, b; char c, d; a = 10; b = 20; c = 'I'; d = 'V'; //display values before swap: Console.WriteLine("Int values before calling swap:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("Char values before calling swap:"); Console.WriteLine("c = {0}, d = {1}", c, d); //call swap Swap(ref a, ref b); Swap (ref c, ref d); //display values after swap: Console.WriteLine("Int values after calling swap:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("Char values after calling swap:"); Console.WriteLine("c = {0}, d = {1}", c, d); Console.ReadKey(); } } }
ناتج الدوال العامة Generic Methods
Int values before calling swap: a = 10, b = 20 Char values before calling swap: c = I, d = V Int values after calling swap: a = 20, b = 10 Char values after calling swap: c = V, d = I
مثال على التفويض العام Generic Delegates
delegate T NumberChanger<T>(T n);
Generics مثال على التفويض العام
using System; using System.Collections.Generic; delegate T NumberChanger<T>(T n); namespace GenericDelegateAppl { class TestDelegate { static int num = 10; public static int AddNum(int p) { num += p; return num; } public static int MultNum(int q) { num *= q; return num; } public static int getNum() { return num; } static void Main(string[] args) { //create delegate instances NumberChangernc1 = new NumberChanger (AddNum); NumberChanger nc2 = new NumberChanger (MultNum); //calling the methods using the delegate objects nc1(25); Console.WriteLine("Value of Num: {0}", getNum()); nc2(5); Console.WriteLine("Value of Num: {0}", getNum()); Console.ReadKey(); } } }
ناتج مثال التفويض Generics
Value of Num: 35 Value of Num: 175
Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX,SQL
Al alami st
Gaza -jabalia, Gaza Strip
Palestine
Marital Status: Single
DOB: 05/10/1984
1/2/2014
التسميات: advance-csharp
<< الصفحة الرئيسية