PDA

View Full Version : سوال: رابط IEnumerable چیست و چگونه ساخته میشود



yasemi
سه شنبه 18 خرداد 1389, 10:40 صبح
رابط IEnumerable چیست و چگونه ساخته میشود . مثلا من اگه بخوام یه آرایه دوبعدی رو اینجوری تعریف کنم چطور باید این کار رو انجام بدم ؟:متفکر:

کسی مطلب آموزشی در این باره داره ؟:متفکر:


ممنون

sia_2007
سه شنبه 18 خرداد 1389, 11:51 صبح
?
IEnumerable یک اینترفیس است؛ که هر کلاسی آنرا محقق کند؛ میتواند از Extension Method های کلاس Enumerable بهره مند شود.
هر کلاسی هم که IQueryable رو محقق کنه؛ علاوه بر این که در جا IEnumerable رو محقق کرده؛ میتونه از متدهای Queryable هم استفاده کنه

yasemi
سه شنبه 18 خرداد 1389, 13:10 عصر
اگه میشه یکم بیشتر توضیح بدید ممنون میشم

کتابی یا pdf برای آموزش این قسمت وجو داره ؟

sylvester
سه شنبه 18 خرداد 1389, 13:12 عصر
ممنون میشم دوستمون یسری توضیحات تخصصی دادن که من هیچی نفهمیدم

yasemi
سه شنبه 18 خرداد 1389, 13:23 عصر
آره منم متوجه نشدم

sia_2007
سه شنبه 18 خرداد 1389, 19:58 عصر
ببینید ما یه چیزی داریم به نام Extension Method
ما میتوانیم یک کلاس استاتیک داشته باشیم.
و سپس داخلش یک متد Static داشته باشیم.
و اون متد Static رو به صورت زیر بنویسیم :

(, ... بقیه متد ها public static void SampleMethod( this int

حال هر کجا بنویسیم :

Int32 i = 0
i.SampleMethod

میبینید که این متد به کلاس int تزریق شده.
حال ما کلاس Static ای داریم به نام Enumerable
و اون چندین Extension Method داره که به صورت زیر هستند :
this Ienumerable
و هر کلاسی که IEnumerable رو محقق کنه؛ عملا از اون متد ها بهره مند میشه.
اون کلاس ها ؛ Method های LINQ هستند.

yasemi
چهارشنبه 19 خرداد 1389, 13:07 عصر
من چطور میتونم این مطالب رو یاد بگیرم ؟ مرج خارجی یا فارسی نداره؟

m-ezaty
یک شنبه 25 اردیبهشت 1390, 12:30 عصر
:متعجب:
من فکر می کنم خودتم نفهمیدی چی گفتی!

amir-yeketaz
یک شنبه 25 اردیبهشت 1390, 13:20 عصر
:متعجب:
من فکر می کنم خودتم نفهمیدی چی گفتی!

دوست عزیز این بخاطره اینه که شما چیزی از LINQ نمیدونید! ... مطالب آموزشی در مورد LINQ بسیار زیاده(چه فارسی و ...)

بهتون توصیه میکنم LINQ رو یاد بگیرید! یادگیریش که خیلی آسونه ولی عادت کردن بهش و استفاده از اون تمرین میخواد :

چند تا لینک و کتاب آموزشی در خود سایت:
http://barnamenevis.org/showthread.php?275341-%D8%B1%D9%88%D8%A7%D9%86%D8%AA%D8%B1%DB%8C%D9%86-PDF-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-LINQ

http://barnamenevis.org/showthread.php?193300-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-LINQ-(%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7)


مقالات انگلیسی هم خواسین فقط کافیه گوگل کنید!



موفق باشید ...

tooraj_azizi_1035
یک شنبه 25 اردیبهشت 1390, 14:53 عصر
سلام،
اینترفیس IEnumerable در فضای نام System.Collections واقع در اسمبلی mscorlib.dll که اصلی ترین فایل .NET Framework هست قرارداره.
Interface ها همانند کلاس ها هستند با این تفاوت که متدهای داخلی آن ها پیاده سازی نمی شود بلکه کلاسی که از Interface مشتق می شود آن را پیاده می کند یعنی رفتار خاص خودش را پیاده می کند با همان اسم. مثلاً متد GetEnumerator یک شمارنده است که کلکسیون ها را شمارش می کند کلکسیون به مجموعه ای از عناصر هم نوع که الزاماً در حافظه پشت سر هم نیستند گفته می شود.
برای دسترسی به تک تک اعضاء کلکسیون از دستور foreach در سی شارپ استفاده می کنیم. Enumerator ها می توانند برای خواندن داده های موجود در کلکسیون ها مورد استفاده قرار بگیرند اما نمی توانند آنها را تغییر دهند.
مثال زیر پیاده سازی واسط IEnumerable را در مورد یک لیست سفارشی (اشخاص People) که اعضا آن علناً مورد دستیابی قرار نمی گیرند بلکه توسط foreach خوانده می شود را نشان می دهد:

using System;
using System.Collections;

public class Person
{
public Person(string fName, string lName)
{
this.firstName = fName;
this.lastName = lName;
}

public string firstName;
public string lastName;
}

public class People : IEnumerable
{
private Person[] _people;
public People(Person[] pArray)
{
_people = new Person[pArray.Length];

for (int i = 0; i < pArray.Length; i++)
{
_people[i] = pArray[i];
}
}

IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator) GetEnumerator();
}

public PeopleEnum GetEnumerator()
{
return new PeopleEnum(_people);
}
}

public class PeopleEnum : IEnumerator
{
public Person[] _people;

// Enumerators are positioned before the first element
// until the first MoveNext() call.
int position = -1;

public PeopleEnum(Person[] list)
{
_people = list;
}

public bool MoveNext()
{
position++;
return (position < _people.Length);
}

public void Reset()
{
position = -1;
}

object IEnumerator.Current
{
get
{
return Current;
}
}

public Person Current
{
get
{
try
{
return _people[position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
}

class App
{
static void Main()
{
Person[] peopleArray = new Person[3]
{
new Person("John", "Smith"),
new Person("Jim", "Johnson"),
new Person("Sue", "Rabon"),
};

People peopleList = new People(peopleArray);
foreach (Person p in peopleList)
Console.WriteLine(p.firstName + " " + p.lastName);

}
}

/* This code produces output similar to the following:
*
* John Smith
* Jim Johnson
* Sue Rabon
*
*/



بیشتر: http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx