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

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

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

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

Q&A

解決済

2回答

1430閲覧

C# インスタンスした独自クラスのメンバに値を追加したい

go-kawano

総合スコア15

C#

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

0グッド

0クリップ

投稿2018/05/07 06:41

C#初心者です。

現在、下記ClassAをnewしたものに値を追加しようとしてうまくいっていません。

classA

public class A { public AA menber { get; set; } } public class AA { public AAlist[] list { get; set; } public AA() { this.list = new AAlist[1]; } } public struct AAlist { public string a { get; set; } public string b { get; set; } }

サンプルプログラム

A a = new A(); a.menber.list[0].a = ”追加したい値";

サンプルプログラムの中で、list[0].aに値を追加しようと

オブジェクト参照がオブジェクト インスタンス に設定されていません。

というエラーが発生します。

エラーについて、原因を調査しましたところ、nullであるlistを参照しているためとわかり、
classAAの中に初期化する行を追加したのですが、以前listがnullのままの状態です。

これらについて解決方法をご教示頂けたらと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

C#

1public class A 2 { 3 public AA menber { get; set; } =new AA(); 4 5 } 6 7または、 8public class A 9 { 10 public AA menber { get; set; } 11 public void A() { member=new AA(); } 12 13 } 14 15

投稿2018/05/07 06:48

編集2018/05/07 06:53
y_waiwai

総合スコア87774

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

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

go-kawano

2018/05/07 07:31

上記方法で解決致しました。ご回答ありがとうございました。
guest

0

public AA() { this.list = new AAlist[1]; }

において、配列については一つ分メモリを確保していますが、それだけではAAlistインスタンスの初期化は行われません。

C#

1public AA() { 2 this.list = new AAlist[1]; 3 this.list[0] = new AAlist(); // 本行を追加 4}

上記のようにAAlistインスタンスの初期化が必要です。

投稿2018/05/07 06:48

kazto

総合スコア7196

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問