3

私はmonodevelopでac#winformアプリケーションを作成していますが、Linesプロパティを使用して、複数行のテキストボックスの複数行のコンテンツを特定の文字列値に設定する必要があります。だから私はこのコードを書いたが、Visual Studioでは例外を生成せず問題なく動作するが、monoでは動作しない:

public string[] newLines = new string[36]; 

public void Main_Form_Load(object sender, EventArgs e)
    {
      newLines[3] = "</CsOptions>";
      textBox1.Lines = newLines;
    }

特に、istructionはnullreferenceexceptiontextBox1.Lines = newLines;を与え、それを削除すると、例外は期限切れになります。

4

1 に答える 1

1

配列には、各要素がデフォルト値に初期化されています。あなたの場合、各要素(タイプstringは)はに初期化されますがnull、これは空の文字列とは異なり""ます。

.NETとmonoはどちらも互換性があるはずですが、この特定のケースではおそらく互換性がありません。おそらく、2つのプロパティの処理にはいくつかの違いがあります。考えられるのは、.NETがチェックするのに対しTextBox.Lines、monoがチェックしない場合です。null

そのようなことは避けnull、常に配列を初期化する必要があります。例えば:

for(int i = 0; i < newLines.Length; i++){
    newLines[i] = "";
}
于 2013-02-18T12:58:09.017 に答える