سؤال

كيف يمكنني إنشاء مصفوفة سلسلة فارغة أحادية البعد؟

هل كانت مفيدة؟

المحلول

خافت strEmpty(-1) كسلسلة

نصائح أخرى

VB هو 0-مفهرسة في إعلانات الصفيف, ، شيء من هذا القبيل Dim myArray(10) as String يعطيك 11 عناصر.إنه خطأ شائع عند الترجمة من لغات C.

لذلك، بالنسبة لمصفوفة فارغة، فإن أيًا مما يلي سيعمل:

Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty

ليس عليك تضمين String مرتين، ولا يتعين عليك استخدام New.
أي مما يلي سوف يعمل ...

Dim strings() as String = {}
Dim strings as String() = {}

المصفوفة التي أنشأتها Dim s(0) As String ليس فارغا

في VB.Net، الحرف المنخفض الذي تستخدمه في المصفوفة هو فهرس العنصر الأخير.يبدأ VB.Net بالفهرسة افتراضيًا عند 0، لذا يكون لديك مصفوفة تحتوي بالفعل على عنصر واحد.

يجب عليك بدلاً من ذلك محاولة استخدام System.Collections.Specialized.StringCollection أو حتى أفضل) System.Collections.Generic.List(Of String).إنها تعادل تقريبًا نفس الشيء كمصفوفة من السلاسل، باستثناء أنها أفضل بكثير لإضافة العناصر وإزالتها.ولنكن صادقين:نادرًا ما تنشئ ملفًا فارغ مجموعة سلسلة دون الرغبة في الإضافة على الأقل عنصر واحد لها.

إذا كنت تريد حقًا مصفوفة سلسلة فارغة، قم بإعلانها على النحو التالي:

Dim s As String()

أو

Dim t() As String

شيء مثل:

Dim myArray(9) as String

سيعطيك مجموعة من 10 مراجع سلسلة (يشير كل منها إلى لا شيء).

إذا لم تكن متأكدًا من الحجم في وقت الإعلان، فيمكنك الإعلان عن مصفوفة سلسلة مثل هذا:

Dim myArray() as String

وبعد ذلك يمكنك توجيهه إلى مجموعة من السلاسل ذات الحجم المناسب لاحقًا:

ReDim myArray(9) as String

إن ZombieSheep على حق بشأن استخدام القائمة إذا كنت لا تعرف الحجم الإجمالي وتحتاج إلى ملؤها ديناميكيًا.في VB.NET سيكون ذلك:

Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")

وبعد ذلك للحصول على مصفوفة من تلك القائمة:

myList.ToArray()

@علامة

شكرا على التصحيح.

طريقة أخرى للقيام بذلك:

Dim strings() As String = {}

اختبار أنها مصفوفة سلسلة فارغة:

MessageBox.Show("count: " + strings.Count.ToString)

سيظهر مربع رسالة يقول "العد:0".

مطول قليلا، ولكن التوثيق الذاتي ...

Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray

لست متأكدًا من سبب رغبتك في ذلك، ولكن طريقة C# ستكون كذلك

string[] newArray = new string[0];

أعتقد أن VB لن يكون مختلفًا جدًا عن هذا.

إذا كنت تقوم بإنشاء مصفوفة فارغة حتى تتمكن من ملؤها بالقيم لاحقًا، فيجب عليك التفكير في استخدامها

List<string>

وتحويله إلى مصفوفة (إذا كنت بحاجة إليه حقًا كمصفوفة) باستخدام

newListOfString.ToArray();

جرب هذا قاتمة arraystr () كسلسلة = {}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top