C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クラスを配列で宣言する方法


(過去ログ 141 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■82532 / inTopicNo.1)  クラスを配列で宣言する方法
  
□投稿者/ ボトラー (1回)-(2017/01/14(Sat) 14:30:46)

分類:[.NET 全般] 


VB.NETです。


Public Class Properties

Property aaa As Boolean
Property bbb As Boolean
Property ccc As Boolean

End Class


というクラスを作成し、このクラスの配列を作成したいのですが


Dim list As Properties() = New Properties(100) {}

とやってもうまくクラスが作成できません。

http://qiita.com/ShinichiOkayama/items/cc76f698898e0d924c86

このページのように
Public Sub New
を定義し、
配列作成時に初期値を決める必要があるのでしょうか?

上記ページでは
Dim members(0 To 2) As Human 'あらかじめ大きさを決めておかないといけない
members(0) = New Human("太郎", "山田", #3/1/1950#)
members(1) = New Human("花子", "佐藤", #8/31/1970#)
members(2) = New Human("次郎", "山田", #3/1/2010#)


のように要素毎に初期値を入れるようなコードが書かれていますが
宣言と同時に初期値も入れることはできないのでしょうか?






引用返信 編集キー/
■82536 / inTopicNo.2)  Re[1]: クラスを配列で宣言する方法
□投稿者/ Jitta (260回)-(2017/01/14(Sat) 16:33:20)
No82532 (ボトラー さん) に返信

> とやってもうまくクラスが作成できません。

まずは、どの様なることを期待して、
実際にはどうなるのかを書きましょう。
引用返信 編集キー/
■82537 / inTopicNo.3)  Re[2]: クラスを配列で宣言する方法
□投稿者/ ボトラー (2回)-(2017/01/14(Sat) 16:35:39)
list.aaa、lists.bbb、list.cccにnothing あるいはfalseが入った状態で
配列が作成されることを期待しているのですが
配列は作成されるものの
aaa,bbb,cccという要素が作成されません。
 
引用返信 編集キー/
■82539 / inTopicNo.4)  Re[1]: クラスを配列で宣言する方法
□投稿者/ 魔界の仮面弁士 (1057回)-(2017/01/14(Sat) 16:55:46)
No82532 (ボトラー さん) に返信
> Dim list As Properties() = New Properties(100) {}

list(0)〜list(100) までの、計101個の要素が用意されますが、
すべて空っぽ(Nothing)の状態になりますね。


中身を入れたい場合、たとえば
 Dim list = Enumerable.Repeat(New Properties(), 101).ToArray()
とすることができます。

この場合、1 個のインスタンスを 101 箇所に渡していることになるため、
list(10).aaa を書き換えると、list(20).aaa も書き換わります。



また、101 箇所それぞれに別のインスタンスを用意したいのであれば、
 Dim list = Enumerable.Range(0, 101).Select(Function(i) New Properties()).ToArray()
と書けます。
引用返信 編集キー/
■82559 / inTopicNo.5)  Re[2]: クラスを配列で宣言する方法
□投稿者/ Jitta (262回)-(2017/01/15(Sun) 08:56:36)
VBはよくわからないのですが、C#だと、こんな書き方。
var list = new Properties[] {
new Properties(aaa, bbb, ccc),
new Properties(...), ...
};

C#の仕様書があることは知っていますが、
VBってないんだっけ?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -