مشاركة عبر


إرشادات استخدام صفيفة

للحصول على وصف عام صفائف واستخدام صفيفة، راجع فئة النظام.صفيفة.

Arrays vs.المجموعات

فئة مكتبة designers might need إلى make difficult decisions حول when إلى استخدم an صفيفة و when إلى return a مجموعة. Although these أنواع have similar usage نماذج, they have different الأداء characteristics. في عام, you should استخدم a مجموعة when إضافة, إزالة, أو غير ذلك وظائف for manipulating the مجموعة are supported.

For المزيد معلومات حول using collections, see بنيات بيانات و مجموعات.

صفيفة Usage

Do not return an internal مثيل of an صفيفة. This allows calling تعليمات برمجية إلى تغيير the صفيفة. The following مثال demonstrates how the صفيفة badChars can be تم تغييره بواسطة أي تعليمات برمجية that accesses the Path خاصية even though the خاصية does not implement the التعيين accessor.

Imports System
Imports System.Collections
Imports Microsoft.VisualBasic

Public Class ExampleClass
   NotInheritable Public Class Path
      Private Sub New()
      End Sub

      Private Shared badChars() As Char = {Chr(34),"<"c,">"c}
      
      Public Shared Function GetInvalidPathChars() As Char()
         Return badChars
      End Function

   End Class
   
   Public Shared Sub Main()
      ' The following code displays the elements of the 
      ' array as expected.
      Dim c As Char
      For Each c In  Path.GetInvalidPathChars()
         Console.Write(c)
      Next c
      Console.WriteLine()
      
      ' The following code sets all the values to A.
      Path.GetInvalidPathChars()(0) = "A"c
      Path.GetInvalidPathChars()(1) = "A"c
      Path.GetInvalidPathChars()(2) = "A"c
      
      ' The following code displays the elements of the array to the
      ' console. Note that the values have changed.
      For Each c In  Path.GetInvalidPathChars()
         Console.Write(c)
      Next c
   End Sub
End Class
using System;
using System.Collections;

public class ExampleClass
{
   public sealed class Path
   {
      private Path(){}
      private static char[] badChars = {'\"', '<', '>'};
      public static char[] GetInvalidPathChars()
      {
         return badChars;
      }
   }
   public static void Main()
   {
      // The following code displays the elements of the 
      // array as expected.
      foreach(char c in Path.GetInvalidPathChars())
      {
         Console.Write(c);
      }
      Console.WriteLine();

      // The following code sets all the values to A.
      Path.GetInvalidPathChars()[0] = 'A';
      Path.GetInvalidPathChars()[1] = 'A';
      Path.GetInvalidPathChars()[2] = 'A';

      // The following code displays the elements of the array to the
      // console. Note that the values have changed.
      foreach(char c in Path.GetInvalidPathChars())
      {
         Console.Write(c);
      }
   }
}

You cannot correct the problem في the preceding مثال بواسطة making the badChars صفيفة readonly (ReadOnly في Visual أساسى). You can clone the badChars صفيفة و return the نسخ, but this has significant الأداء implications. راجع القسم الفرعي ضمن القسم الذي يلي خصائص هذا "الصفيف الإرجاع" للحصول على التفاصيل. ما يلي تعليمات برمجية مثال يوضح كيفية تعديل GetInvalidPathCharsالأسلوب للرجوع نسخة وذلك من badCharsالصفيف.

Public Shared Function GetInvalidPathChars() As Char()
   Return CType(badChars.Clone(), Char())
End Function
public static char[] GetInvalidPathChars()
{
   return (char[])badChars.Clone();
}

خصائص التي بإرجاع صفائف

يجب عليك استخدام المجموعات لتجنب تعليمات برمجية inefficiencies يعود إلى الخصائص التي ترجع الصفائف. في ما يلي تعليمات برمجية سبيل المثال، كل استدعاء إلى myObjخاصية بإنشاء نسخ من الصفيف. كـ سيتم تاريخ الإنشاء نتيجة، 2n + 1 نسخاً من الصفيف في الحلقة التالية.

Dim i As Integer
For i = 0 To obj.myObj.Count - 1
   DoSomething(obj.myObj(i))
Next i
for (int i = 0; i < obj.myObj.Count; i++)
      DoSomething(obj.myObj[i]);

لمزيد من المعلومات، راجع اختيار بين خصائص و أساليب.

حقول التي تقوم بإرجاع صفائف

لا استخدم للقراءة فقط (ReadOnlyفي Visual أساسى) حقول الصفائف. إذا قمت بذلك، الصفيف هو القراءة فقط يمكن تم تغييرهه، لكن يمكن تم تغييره العناصر في الصفيف. يلي تعليمات برمجية يوضح المثال كيفية العناصر الصفيف القراءة فقط InvalidPathCharsيمكن أن تتغير.

public sealed class Path
{
   private Path(){}
   public static readonly char[] InvalidPathChars = {'\"', '<', '>','|'}'
}
//The following code can be used to change the values in the array.
Path.InvalidPathChars[0] = 'A';

استخدام خصائص تمت الفهرسة في مجموعات

استخدم خاصية مفهرس فقط كعضو مجموعة افتراضية فئة أو واجهة. لا تقم بإنشاء مجموعات من الدالات في أنواع المجموعات. نقش من الطرق، مثل كـ إضافة عنصرو العدد ، إشارات أنه يجب أن يكون النوع مجموعة.

إرجاع صفائف فارغ

StringوArrayلا يجب أن ترجع الخصائصnullمرجع. Nullيصعب إلى فهم في هذا سياق. على سبيل المثال، مستخدم قد تفترض الذي يلي تعليمات برمجية ستعمل.

Public Sub DoSomething()
   Dim s As String = SomeOtherFunc()
   If s.Length > 0 Then
      ' Do something else.
   End If
End Sub
public void DoSomething()
{
   string s = SomeOtherFunc();
   if (s.Length > 0)
   {
      // Do something else.
   }
}

قاعدة عام هو ذلك null، سلسلة فارغ ("")، ويجب أن تكون فارغ (العنصر 0) عبارة عن صفائف التعامل مع نفس الطريقة. إرجاع صفيفة فارغ بدلاً من nullالمرجع.

أجزاء حقوق النشر 2005 Microsoft Office 2010 Suite Corporation. كافة الحقوق محفوظة.

أجزاء حقوق النشر شركة Addison-Wesley. كافة الحقوق محفوظة.

ل المزيد المعلومات تشغيل إرشادات التصميم، راجع "إطار عمل إرشادات التصميم: كتاب اصطلاحات، Idioms، و نقش لمكتبات.NET القابل لإعادة الاستخدام"ب Krzysztof Cwalina و رفيق Abrams، ينشره Addison-Wesley، 2005.

راجع أيضًا:

المرجع

Array

المبادئ

إرشادات الاستخدام

موارد أخرى

تصميم إرشادات لتطوير مكتبات فئة