1

オブジェクトを関数に送信しようとしましたが、C# はそれを好まないようです。これがコードです。

string[] bkgrSource = new string[12];
Texture2D[] bkgrBANK = new Texture2D[12];

これbkgrSource[0]はファイル名bkgrBANK[0]の配列であり、Texture2D.

この機能は動作していません。bkgrBANK[0]遺言は空のままです。何か助けはありますか?

commonImageLoader( bkgrSource[0], bkgrBANK[0] ); 

private void commonImageLoader(string source, Texture2D destination ) {
    if ( !string.IsNullOrEmpty( source ) ) {
        fileName = source;
        using ( fileStream = new FileStream( @fileName, FileMode.Open ) ) {
        destination = Texture2D.FromStream( GraphicsDevice, fileStream );
        }
    }
}
4

1 に答える 1

1

私は C# の第一人者ではありませんが、要点は、パラメーターを値 (デフォルトのメソッド呼び出し動作) で渡していることだと思います。そのため、関数のソースおよび宛先パラメーターは元のパラメーターのコピーです。

この問題を解決するには、パラメータを参照渡しできると思います。おそらくこれはうまくいくはずです:

commonImageLoader( ref bkgrSource[0], ref bkgrBANK[0] ); 

private void commonImageLoader(ref string source, ref Texture2D destination ) {
    if ( !string.IsNullOrEmpty( source ) ) {
        fileName = source;
        using ( fileStream = new FileStream( @fileName, FileMode.Open ) ) {
        destination = Texture2D.FromStream( GraphicsDevice, fileStream );
        }
    }
}
于 2012-08-05T18:00:24.683 に答える