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

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

新規登録して質問してみよう
ただいま回答率
85.50%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

579閲覧

クラスの配列のサイズを変更する方法

Supermokomiti

総合スコア7

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2022/02/16 03:14

C# WPF .NET6でプログラミングをしています。

C#

1public class Response 2 { 3 public class Item 4 { 5 public string? latitude { get; set; } 6 public string? longitude { get; set; } 7 public DateTime reportTime { get; set; } 8 public string? regionCode { get; set; } 9 public string? regionName { get; set; } 10 public string? isCancel { get; set; } 11 public string? depth { get; set; } 12 public string? calcintensity { get; set; } 13 public string? isFinal { get; set; } 14 public DateTime originTime { get; set; } 15 public string? magnitude { get; set; } 16 public string? reportNum { get; set; } 17 public string? reportId { get; set; } 18 public string? isWarning { get; set; } 19 } 20 21 public class HypoInfo 22 { 23 public Item[]? items { get; set; } 24 } 25 26 27 }

このようにクラスを作って、JSONという変数にJSON.itemsを1つ作りました。要するに、JSON.items[0]が今あるということです。
しかし、その後にitemsをもう一つ追加したくなりました。配列のサイズを変更するためにはArray.Resizeを使おうとしました。

C#

1Array.Resize(ref JSON.items, 2);

しかし、JSON.itemsはプロパティということでrefが使用できず、追加できていません。(CS0206)
どのようにすれば追加出来るでしょうか。

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

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

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

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

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

Supermokomiti

2022/02/16 03:23

あと、 JSON = Response.HypoInfo; JSON.items = new Response.Item[1]; となっています。
guest

回答2

0

ベストアンサー

以下のようにしてみてください。

public Item[]? items { get; set; } ⇒ public List<Item>? items { get; set; }


【追記】

上の回答の意味が分かってもらえなかったようなので追記。

配列ではなくて List<T> クラス(必要に応じてサイズが動的に増加)を使えば、新たに Item を追加するときは、以下のように新たな Item のインスタンスを作って、

Item item = new Item { latitude = "12-34-56", longitude = "100-12--34", // 中略         };

追加するときは以下のようにしてはいかがと言う話です。

HypoInfo.items.Add(item);

投稿2022/02/16 03:17

編集2022/02/16 03:33
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Supermokomiti

2022/02/16 03:21

変化はありませんでした。
退会済みユーザー

退会済みユーザー

2022/02/16 03:34

> 変化はありませんでした。 使い方次第です。最初の回答の意味が分かってもらえなかったようなので追加情報を上の回答欄に追記しておきました。
Supermokomiti

2022/02/16 05:39

なるほど! 理解できました!ありがとうございます!
guest

0

多分こういう感じにしたかったんですよね?

C#

1public void Main(){ 2 var JSON = new Response(); 3 JSON.HypoInfo = new List<Item>(); 4 JSON.HypoInfo.Add(new Item() { latitude = "",longitude = "" }); // この文で追加 5 JSON.HypoInfo.Add(new Item() { latitude = "",longitude = "" }); 6}

C#

1public class Response 2{ 3 public List<Item> HypoInfo { get; set; } 4} 5 6public class Item 7{ 8 public string latitude { get; set; } 9 public string longitude { get; set; } 10 public DateTime reportTime { get; set; } 11 public string regionCode { get; set; } 12 public string regionName { get; set; } 13 public string isCancel { get; set; } 14 public string depth { get; set; } 15 public string calcintensity { get; set; } 16 public string isFinal { get; set; } 17 public DateTime originTime { get; set; } 18 public string magnitude { get; set; } 19 public string reportNum { get; set; } 20 public string reportId { get; set; } 21 public string isWarning { get; set; } 22}

そのうえでもしList<Item>をあえて使わない場合ですがプロパティであることが問題であれば

C#

1public class HypoInfo 2{ 3 public Item[]? items //{ get; set; } を消す 4}

とすれば
Array.Resize(ref JSON.HypoInfo , 2);で
渡せると思います

投稿2022/02/16 04:44

akiko_

総合スコア35

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問