14-10-12, 03:53 PM
الشكل الاساسي لل interface المسمى IEnumerable :
C#:
vb.net:
وكما ترى في المثال السابق ، يقوم بتعريف انترفيس من نوع IEnumerator بالشكل التالي :
C#:
vb.net:
لذا لو كنا نرغب في ان نجعل فئة users تقوم بعمل implements لهذا الانترفيس ، سنضطر لعمل implement للدالة GetEnumerator() ، سيكون ذلك بالشكل التالي :
C#:
vb.net:
يمكننا القيام بذلك يدوياً ايضاً بالشكل التالي :
C#:
vb.net:
- ماذا نستفيد من هذه الطريقة ؟
في الواقع فأي مبرمج لقواعد البيانات يستطيع ان يستنتج العلاقة بسهولة ، إن ما نحن بصدده هنا هو مثال عن فئة تحتوي على مجموعة من البيانات اشبه بقاعدة بيانات ، واصبح باستطاعنا الآن القراءة منها والتنقل فيها باستخدام moveNext .
C#:
كود :
public interface IEnumerable
{
IEnumerator GetEnumerator();
}vb.net:
كود :
[FONT=Tahoma]Public Interface IEnumerable
Function GetEnumerator() As IEnumerator
End Interface
[/FONT]وكما ترى في المثال السابق ، يقوم بتعريف انترفيس من نوع IEnumerator بالشكل التالي :
C#:
كود :
[FONT=Tahoma]public interface IEnumerator
{
bool MoveNext ();
object Current { get;}
void Reset ();
}[/FONT]vb.net:
كود :
[FONT=Tahoma]Public Interface IEnumerator
Function MoveNext() As Boolean
ReadOnly Property Current() As Object
Sub Reset()
End Interface[/FONT]لذا لو كنا نرغب في ان نجعل فئة users تقوم بعمل implements لهذا الانترفيس ، سنضطر لعمل implement للدالة GetEnumerator() ، سيكون ذلك بالشكل التالي :
C#:
كود :
[FONT=Tahoma]public class users:IEnumerable
{
employee[] emp = new employee[4];
users()
{
emp[0] = new employee(10, "Ahmed");
emp[1] = new employee(20, "Khaled");
emp[2] = new employee(30, "Ali");
emp[3] = new employee(40, "Sami");
}[/FONT]
[FONT=Tahoma]public IEnumerator GetEnumerator()
{
return emp.GetEnumerator();
}[/FONT]
[FONT=Tahoma]}[/FONT]vb.net:
كود :
[FONT=Tahoma]Public Class users
Implements IEnumerable
Private emp As employee() = New employee(3) {}
Private Sub New()
emp(0) = New employee(10, "Ahmed")
emp(1) = New employee(20, "Khaled")
emp(2) = New employee(30, "Ali")
emp(3) = New employee(40, "Sami")
End Sub
Public Function GetEnumerator() As IEnumerator
Return emp.GetEnumerator()
End Function
End Class
[/FONT]يمكننا القيام بذلك يدوياً ايضاً بالشكل التالي :
C#:
كود :
[FONT=Tahoma] IEnumerator i = emp.GetEnumerator();
i.MoveNext();
employee myCar = (employee)i.Current;[/FONT]vb.net:
كود :
[FONT=Tahoma]Dim i As IEnumerator = emp.GetEnumerator()
i.MoveNext()
Dim myCar As employee = DirectCast(i.Current, employee)
[/FONT]- ماذا نستفيد من هذه الطريقة ؟
في الواقع فأي مبرمج لقواعد البيانات يستطيع ان يستنتج العلاقة بسهولة ، إن ما نحن بصدده هنا هو مثال عن فئة تحتوي على مجموعة من البيانات اشبه بقاعدة بيانات ، واصبح باستطاعنا الآن القراءة منها والتنقل فيها باستخدام moveNext .
