PDA

View Full Version : سوال: ایجاد آرایه ای از یک کلاس



hossein-khoshseyar
چهارشنبه 11 مرداد 1391, 15:38 عصر
دوستان یه سئوال داشتم
وقتی ما یه آرایه از یک کلاس تعرف می کنیم
چطور می تونیم همشون رو با هم new کنیم
آیا راهی غیر از اینکه یدونه یدونه اونا رو new کنی هست؟
این کد منه؟
ایا می تونم بدون استفاده از فور توی یه خط همشون رو نیو کنم
ممنون

Dim a(10) As Collections.ArrayList
For n As Integer = 0 To 10
a(n) = New System.Collections.ArrayList
Next

M.KH-SH
چهارشنبه 11 مرداد 1391, 15:57 عصر
فکر نکنم بشه چون از جز به کل باید با حلقه رفت

hakim22
چهارشنبه 11 مرداد 1391, 16:00 عصر
تا وقتی شما کلاس دارید هیچ شی خود به خود ایجاد نمیشه و همیشه انتساب بدون new یعنی تغییر اشاره گره و نه ساخت یک نمونه (instance) جدید
بالاخره شما نیاز به یک حلقه ی for دارید که مقدار داریه ها را تعیین کنید و گذاشتن new در پشت آن زحمتی برای شما ایجاد نمی کند.

روش استفاده ی شما از آرایه ها هم خیلی کارایی پایینی دارد.
بهتر است از generic ها استفاده کنید

ROSTAM2
چهارشنبه 11 مرداد 1391, 16:07 عصر
اگه مي خوايد از يك كلاس خاص يك گروه(ليست) خاص داشته باشيد :


Dim MyCollection As New List(OF String|Integer|Decimal|Class1|Form1,...)


For Example:

Dim MyColl As New List(OF String)
MyColl.Clear
MyColl.Add("XXXXX")

For I = 0 TO MyColl.Count -1
Msgbox (MyColl(i))
Next I

hossein-khoshseyar
چهارشنبه 11 مرداد 1391, 17:45 عصر
دوستان ممنون از پاسخگوییتون
اول اینکه من این اری لیست رو مثال زدم فقط
هدفم و سئوالم این بود که چطوری یک ارایه از کلاس رو درست کنم و با یه خط همشون رو نیو کنم
اون دوستمون که می گه بلاخره قراره به ارایه ها مقدار بدی پس توی حلقه فور قبل مقدار دهی یه نیو بزار

من اصلا این اری لیست رو فقط یه نمونه گفتم
اصلا هر کلاس دیگه ای که شما بگی
من سئوالم اینکه چطوری توی یه خط متغرم رو تعریف کرده و یک نیو هم ازش ایجاد کنم تا بتونم توی خط های بعدی ازش استفاده کنم
یعنی مثلا به جای این خط چی باید بنویسم تا کار کنه ( چون این خط اجرا نمیشه و خطا داره)

Dim a(10) As Collections.ArrayList = New Collections.ArrayList

hakim22
چهارشنبه 11 مرداد 1391, 18:09 عصر
دوست من اگر شما نیاز به آرایه ای دارید که درونش شی ذخیره کنید از a(10) استفاده نکنید. خود Arraylist رو استفاده کنید.

Dim a as new collection.arraylist


بعد مقدار هر item رو با یک شی جدید پر کنید


a(0)= new myObj()

hakim22
چهارشنبه 11 مرداد 1391, 18:13 عصر
یعنی مثلا به جای این خط چی باید بنویسم تا کار کنه ( چون این خط اجرا نمیشه و خطا داره)

Dim a(10) As Collections.ArrayList = New Collections.ArrayList

[/QUOTE]

در این خط کد شما می خواهی به همه ی اندیس ها یکجا یک نمونه ی جدید از Arraylist یا هر شی دیگه ای بدی.
VB این حالت رو قبول نمی کنه که همه ی درایه ها رو یکجا در یک حرکت پرکنی چون کلا سیستمی برای اینکه بدون حلقه با همه ی اندیس ها کار کنید در VB یا اصولا دان نت 4 وجود نداره. در بعضی زبانها هست . ولی در دات نت شما حتما باید از حلقه برای هر اندیس استفاده کنید.