PDA

View Full Version : Array.Exists



Ner'zhul Arthas
یک شنبه 01 بهمن 1385, 00:16 صبح
کار با Array.Exists چجوریه؟

programmermp
یک شنبه 01 بهمن 1385, 00:32 صبح
سلام

فکر کنم اگه مطالب زیر رو یه نگاه بندازی متوجه بشی

array.exist همانطور که از اسمش و مطالب پایین پیداست می یاد چک می کنه که ایا المان

های مورد نظر در محدوده تعیین شده وجود دارد یا نه

یه همچین معنی هایی می ده اگ مثالی که میزارم رو خوب نگاه کنی خیلی ساده است

می فهمی

Determines whether the specified array contains elements that match the conditions defined by the specified predicate.
Type Parameters

T The type of the elements of the array.

Parameters

array The one-dimensional, zero-based Array (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/T_System_Array.htm) to search.
match The Predicate (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/T_System_Predicate`1.htm) that defines the conditions of the elements to search for.


Return Value

true if array contains one or more elements that match the conditions defined by the specified predicate; otherwise, false.

Example


The following code example demonstrates the Exists generic method and several other generic methods that use the Predicate generic delegate.
An array of strings is created, containing 8 dinosaur names, two of which (at positions 1 and 5) end with "saurus". The code example also defines a search predicate method named EndsWithSaurus, which accepts a string parameter and returns a Boolean value indicating whether the input string ends in "saurus".
The Exists method stops and returns true at the first element for which the predicate method returns true, which in this case is "Amargasaurus".
http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/local/note.gif</IMG>Note In C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. These languages infer the correct delegate from context and create it automatically.

The TrueForAll (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/M_System_Array_TrueForAll``1_1_4f7a3f3a.htm) generic method stops and returns false at the first element for which the predicate method returns false.
The Find (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/M_System_Array_Find``1_1_4f7a3f3a.htm) generic method traverses the array from the beginning, passing each element in turn to the EndsWithSaurus method. The search stops when the EndsWithSaurus method returns true for the element "Amargasaurus".
The FindLast (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/M_System_Array_FindLast``1_1_4f7a3f3a.htm) generic method is used to search the array backward from the end. It finds the element "Dilophosaurus" at position 5. The FindAll (http://www.barnamenevis.org/forum/ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/M_System_Array_FindAll``1_1_4f7a3f3a.htm) generic method is used to return an array containing all the elements that end in "saurus". The elements are displayed.



Imports SystemPublic Class Example

Public Shared Sub Main()

Dim dinosaurs() As String = { "Compsognathus", _ "Amargasaurus", "Oviraptor", "Velociraptor", _ "Deinonychus", "Dilophosaurus", "Gallimimus", _ "Triceratops" }
Console.WriteLine()
For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next Console.WriteLine(vbLf & _ "Array.Exists(dinosaurs, AddressOf EndsWithSaurus): {0}", _
Array.Exists(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _ "Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: {0}", _ Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _ "Array.Find(dinosaurs, AddressOf EndsWithSaurus): {0}", _ Array.Find(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): {0}", _ Array.FindLast(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.FindAll(dinosaurs, AddressOf EndsWithSaurus):") Dim subArray() As String = _ Array.FindAll(dinosaurs, AddressOf EndsWithSaurus) For Each dinosaur As String In subArray Console.WriteLine(dinosaur) Next End Sub ' Search predicate returns true if a string ends in "saurus". Private Shared Function EndsWithSaurus(ByVal s As String) _ As Boolean ' AndAlso prevents evaluation of the second Boolean ' expression if the string is so short that an error ' would occur. If (s.Length > 5) AndAlso _ (s.Substring(s.Length - 6).ToLower() = "saurus") Then Return True Else Return False End If End FunctionEnd Class' This code example produces the following output:''Compsognathus'Amargasaurus'Oviraptor'Velo ciraptor'Deinonychus'Dilophosaurus'Gallimimus'Tric eratops''Array.Exists(dinosaurs, AddressOf EndsWithSaurus): True''Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: False''Array.Find(dinosaurs, AddressOf EndsWithSaurus): Amargasaurus''Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): Dilophosaurus''Array.FindAll(dinosaurs, AddressOf EndsWithSaurus):'Amargasaurus'Dilophosaurus

باز اگه متوجه نشدی بگو تا توضیح بدم

اقا من شرمندم ولی هر کاری می کنم این ادیتور ه کدها رو به هم می چسبونه

اگه مشکل داشتی در خوندن متن که حتما داری توی وی بی دات نت دکمه F1 رو بزن

بعد عبارت array.exists رو بنویس

همین مطالب رو برات می اره

بازم شرمندم

Ner'zhul Arthas
یک شنبه 01 بهمن 1385, 00:59 صبح
زیر
EndsWithSaurus
خطچین میکشه میگه:

Name 'EndsWithSaurus' is not declared.

Ner'zhul Arthas
یک شنبه 01 بهمن 1385, 23:03 عصر
یکی کمک کنه.

یکی این برنامه رو که programmermp نوشته ببینه کار میکنه یا نه.

یا توضیح بدید این قسمت مربوط به چیه؟

Array.Exists(dinosaurs, AddressOf EndsWithSaurus)

یه یکی یه سورس بذاره.

programmermp
یک شنبه 01 بهمن 1385, 23:57 عصر
سلام

ببین عزیز

قسمت اول که main باشه از کنسول استفاده می کنه برای نمایش نتایج کار در ضمن

یک متغیر ارایه رشته ای تعریف کرده که توش نام 5 تا دایاناسور رو نوشته

بعد توسط تابع endswithsaurus چک می کنه که رشته وارد شده به کلمه saurus ختم می شه یا نه

در ضمن من هر کاری می کنم نمی تونم از برنامه خورجی بگیرم یعنی اجرا نمی تونم بکنم

ولی کارش همونیه که گفتم چک می کنه که رشته ای که به saurus ختم می شه تو ارایه
هست یا نه

در واقع کار array.exists همینه که این مثال داره این رو نشون می ده

Ner'zhul Arthas
دوشنبه 02 بهمن 1385, 01:06 صبح
حل شد.
مشکل از این ادیتور بود که کد ها رو بهم چسبوند. من اصلا نفهمیدم فانکشنی وجود داره. :اشتباه:

Ner'zhul Arthas
دوشنبه 02 بهمن 1385, 01:27 صبح
عجب امکان مزخرفی بود.

سرعتش یک چهاردهم For Each بود.

programmermp
دوشنبه 02 بهمن 1385, 09:04 صبح
خب دیگه اگه قرار بود همه امکانات یک قسمت شبیه هم باشند که دیگه درستشون نمی

کردند

در ضمن نگفتی جطوری استفاده کردی ازش من که هر کاری کردم برای من جواب نداد

Ner'zhul Arthas
دوشنبه 02 بهمن 1385, 21:59 عصر
خوب یه ConsoleApplication بساز
تو Module1.vb
هرچی هست پاک کن و کد زیر رو توش Paste کن.


Module Module1
Sub Main()
Dim dinosaurs() As String = {"Compsognathus", _
"Amargasaurus", "Oviraptor", "Velociraptor", _
"Deinonychus", "Dilophosaurus", "Gallimimus", _
"Triceratops"}
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"Array.Exists(dinosaurs, AddressOf EndsWithSaurus): {0}", _
Array.Exists(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: {0}", _
Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"Array.Find(dinosaurs, AddressOf EndsWithSaurus): {0}", _
Array.Find(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): {0}", _
Array.FindLast(dinosaurs, AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"Array.FindAll(dinosaurs, AddressOf EndsWithSaurus):")
Dim subArray() As String = _
Array.FindAll(dinosaurs, AddressOf EndsWithSaurus)
For Each dinosaur As String In subArray
Console.WriteLine(dinosaur)
Next
Console.ReadLine()

End Sub
' Search predicate returns true if a string ends in "saurus".
Private Function EndsWithSaurus(ByVal s As String) _
As Boolean
' AndAlso prevents evaluation of the second Boolean
' expression if the string is so short that an error
' would occur.
Return (s.Length > 5) AndAlso (s.Substring(s.Length - 6).ToLower() = "saurus")
End Function
'This code example produces the following output:
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'Array.Exists(dinosaurs, AddressOf EndsWithSaurus): True
'Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: False
'Array.Find(dinosaurs, AddressOf EndsWithSaurus): Amargasaurus
'Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): Dilophosaurus
'Array.FindAll(dinosaurs, AddressOf EndsWithSaurus):
'Amargasaurus
'Dilophosaurus
End Module


راستی فور عادی هم سرعتش از فور ایچ بیشتره. حتی وقتی هر دو یه کار انجام بدن. :لبخند: