質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

2849閲覧

Rectangleの配列の定義

asam1005

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/10/07 07:13

Rectangleの配列の定義をするのにfor文で回したいのですが、
いろいろ試してはいるのですがうまくいきません。

for文を使わない場合はうまくいったのでできないことはないと思うのですが、
何がいけないのでしょうか。

よろしくお願いします。

成功する文

C#

1 Rectangle[] recst = 2 { 3 new Rectangle(0, 0, 80, 80), 4 new Rectangle(40, 40, 80, 80), 5 new Rectangle(80, 80, 80, 80), 6 new Rectangle(120, 120, 80, 80), 7 new Rectangle(160, 160, 80, 80), 8 new Rectangle(200,200, 80, 80), 9 new Rectangle(240, 240, 80, 80), 10 new Rectangle(280, 280, 80, 80), 11 new Rectangle(320, 320, 80, 80), 12 new Rectangle(360, 360, 80, 80), 13 new Rectangle(0, 0, 80, 80), 14 };

失敗する文   エラー文:'{'は無効です。 ;が必要です。 '}'が必要です。

C#

1 Rectangle[] recst = new Rectangle[121]; 2 for (int i = 0; i <= 10; i++) 3 { 4 for (int j = 0; j <= 10; j++) 5 { 6 recst[(11 * i) + j] = { (i * 40) + (j * 160), i * 40, 80, 80}; 7 } 8 } 9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

多分

{ (i * 40) + (j * 160), i * 40, 80, 80}

new Rectangle((i * 40) + (j * 160), i * 40, 80, 80)

かな?

投稿2019/10/07 07:42

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asam1005

2019/10/07 07:54

ありがとうございます! ()も試したつもりだったんですがしてなかったみたいです。 まだなんでできないのかわかっていないところが多いのでもう少し調べてみます! ありがとうございます。
YAmaGNZ

2019/10/07 08:31

重要なのは()でなはく、new Rectangleです。
guest

0

ベストアンサー

C#

1Rectangle[] recst = new Rectangle[121];

これでRecangleの実体が生成されるわけではありません。
ループでnewして配列の各要素に代入してください。

投稿2019/10/07 07:39

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asam1005

2019/10/07 07:53

ありがとうございます!うまくいきました! 配列定義の仕方がまだよくわかっていませんでした。 調べてる間に見たコードなのですが これとは別の書き方をしないといけなかったんですね。 何が違うんでしょうか? int[] numbers = new int[3]; numbers[0] = 4; numbers[1] = 5;
YAmaGNZ

2019/10/07 07:58

配列の定義部分では入れ物を作っているにすぎません。 コメントで書かれた例はnumbersというintが複数入るものを作り そこに4とか5というintの値を代入する形となります。 今回の場合、Rectangleを入れるものはできていますので、その1つ1つにRectangleを代入していくことになります。 この代入するものは新しく作成しなければなりません。
asam1005

2019/10/07 08:10

難しいですね。。。 何となくですが、Rectangleは配列で、intは数値だから違うって認識です。 もう少し調べてみます。 いろいろとありがとうございました!!
YAmaGNZ

2019/10/07 08:21

intの場合でも文法的にコンパイルは通りませんが、イメージ的には numbers[0] = new int(4); という感じです。intの場合でも新しく4というintの物を新しく作成し、代入していることになります。
ozwk

2019/10/07 08:25

> Rectangleは配列で Rectangleは配列じゃないです。
asam1005

2019/10/07 08:28

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問