Windows プロジェクトにおける配列の初期化時の Object 型指定について

:grey_question: Question

ドキュメント「Windows - レガシ に対応するプロジェクトについて」の「既知の制限事項」として記載されている Windows - レガシと Windows の構文の違いに関して、配列の初期化時に 型の指定が必要となる具体的な条件を教えてください。

Windows - レガシ の構文 Windows の構文
{} new Object() {}
{task_output.Id.ToString,task_action,now,I_comment} new Object() {task_output.Id.ToString,task_action,now,I_comment }

参考 :
「Studio - Windows - レガシに対応するプロジェクトについて」

:bulb: Answer

Windows の構文では、以下の場合に配列の型の宣言を省略することができないため、配列の初期化時に型を指定する必要があります。

1.配列の初期化時に要素を追加しない場合

New Object () { }

2.配列の初期化時に異なる型の複数の要素を追加する場合

New Object () { "1", 2, true }

補足 : 異なる型の複数の要素を追加する場合について

通常、VB では配列の型を宣言して配列の初期化を行います。

New String () { "1", "2" }

配列の初期化時に格納する値が全て同一の型の場合には、型の宣言を省略することが可能です。

{ "1", "2" }

また、Windows - レガシ プロジェクトでは、
格納する値が異なる型の場合にも、型の宣言を省略して Object 型の配列に値を格納することが可能でした。

{ "1", 2, true }

一方で、Windows プロジェクトでは、配列の型の宣言を省略した場合、
異なる型の値を指定して配列を初期化することができなくなっております。

そのため、Windows プロジェクトで同様の処理を行う場合には、配列の初期化時に Object 型を指定してください。

New Object () { "1", 2, true }