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

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

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

クラスで配列を使う方法

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

■82979 / inTopicNo.1)  クラスで配列を使う方法
  
□投稿者/ くすくす (1回)-(2017/02/24(Fri) 10:42:39)

分類:[.NET 全般] 



VBです。

クラスで二次元配列を宣言して

メインプログラム中で

ReDimで配列サイズを変更したいのですが
うまくいきません


例えば、


Public Class Data_Array

Property data(,) As Single

End Class

sub test

Dim sss As New Data_Array

ReDim sss.data(4,5)

End sub



とやっても、クラスの宣言でエラーが出ます。


Property data() As Single

と1次元配列にすれば宣言ではエラーは出なくなりますが


ReDim sss.data(4)

でエラーが出ます。

一体どうすれば良いですか?


引用返信 編集キー/
■82980 / inTopicNo.2)  Re[1]: クラスで配列を使う方法
□投稿者/ Hongliang (502回)-(2017/02/24(Fri) 10:56:34)
プロパティにおいては、
Property data As Single(,)
のように記述します。
これは関数の返値の記述に似ています。
Function Hoge(...) As Single(,)

ちなみにメンバ変数やローカル変数でも同様に記述可能で、個人的にはこっちの方が好きです。
引用返信 編集キー/
■82981 / inTopicNo.3)  Re[1]: クラスで配列を使う方法
□投稿者/ shu (963回)-(2017/02/24(Fri) 11:02:06)
No82979 (くすくす さん) に返信

型の方に配列宣言する必要があります。

> Property data(,) As Single
Property data As Single(,)
元のは引数を2つ持つプロパティですが、引数が
指定されていないのでエラーになります。


> Property data() As Single
Property data as Single()
※元のはただのSingle型のプロパティになります。

引用返信 編集キー/
■82982 / inTopicNo.4)  Re[2]: クラスで配列を使う方法
□投稿者/ くすくす (3回)-(2017/02/24(Fri) 11:04:09)


ありがとうございます。
うまくいきました。

ちなみに

Dim sss = Enumerable.Range(0, 6).Select(Function(i) New Data_Array()).ToArray()

とすれば、クラスを配列として宣言することができますが、
それぞれの要素のクラスに入っている配列のサイズを
ReDimでサイズ変更したいのですが
Forループを使わずに一行で書くことはできますでしょうか?


引用返信 編集キー/
■82983 / inTopicNo.5)  Re[3]: クラスで配列を使う方法
□投稿者/ shu (964回)-(2017/02/24(Fri) 13:46:54)
No82982 (くすくす さん) に返信
>
> Dim sss = Enumerable.Range(0, 6).Select(Function(i) New Data_Array()).ToArray()
>
・・・(Function(i) New Data_Array() with {.Data = new Single(6) {}}).ToArray()

でどうでしょう?
引用返信 編集キー/
■82985 / inTopicNo.6)  Re[4]: クラスで配列を使う方法
□投稿者/ くすくす (5回)-(2017/02/24(Fri) 14:48:44)
ありがとうございます。
うまくいきました。

ただ
dim num as integer = 6

(Function(i) New Data_Array() with {.Data = new Single(num) {}}).ToArray()

であればうまくいくのですが



Public Class test

Property num As Integer

End Class


dim sss as test
sss.num = 6

(Function(i) New Data_Array() with {.Data = new Single(sss.num) {}}).ToArray()

とやると、
'ByRef' パラメーター 'sss' をラムダ式で使用することはできません。

というエラーが出てしまいます

クラスの値はそのまま使用することができない仕様なのでしょうか?




引用返信 編集キー/
■82988 / inTopicNo.7)  Re[5]: クラスで配列を使う方法
□投稿者/ shu (965回)-(2017/02/24(Fri) 17:31:17)
No82985 (くすくす さん) に返信

>
> dim sss as test
> sss.num = 6
>
この部分をもう少し正確な記述で提示願います。
これだとsssがインスタンスでないのでそもそもエラーです。


> 'ByRef' パラメーター 'sss' をラムダ式で使用することはできません。
このエラーがでるということは

Private Sub ABC(Byref sss as Integer)
  ・・・
  ・・・・new Single(sss.num) ・・・

のようにしてないのでしょうか?


引用返信 編集キー/
■82996 / inTopicNo.8)  Re[6]: クラスで配列を使う方法
□投稿者/ くすくす (6回)-(2017/02/25(Sat) 10:11:43)
理由は分かりませんが、
コードを書き直すとうまくいきました
どうもありがとうございました。
 
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ