我尝试将一些对象发送到一个函数,但似乎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 );
}
}
}
答案 0 :(得分:1)
我不是C#guru,但我认为关键是你要按值传递参数(默认方法调用行为), 因此,函数中的源和目标参数是原始参数的副本。
我认为您可以传递参数by reference来解决此问题。 可能这应该有效:
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 );
}
}
}