私はメトロアプリを書いています。ファイルを読み取って、データからfloat[]を返そうとしています。しかし、私が何をしても、関数はnullを返すようです。私は運が悪かったのと同じような質問の解決策を試しました。
たとえば、次のように使用します
。float [] floatArray = new ModelReader( "filename.txt")。ReadModel()
結果はnull配列になります。
ただし、次を使用する場合:
new ModelReader( "filename.txt")
"Test"も配列を返す前に出力するため、正しい配列がコンソールに出力されます。これは私には非常に奇妙に思えます。
ガイダンスをお願いします。何が悪いのかわかりません。
public class ModelReader
{
float[] array;
public ModelReader(String name)
{
ReadModelAsync(name);
}
public float[] ReadModel()
{
return array;
}
private async Task ReadModelAsync(String name)
{
await readFile(name);
}
async Task readFile(String name)
{
// settings
var path = @"Assets\models\" + name;
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
// acquire file
var file = await folder.GetFileAsync(path);
// read content
var read = await Windows.Storage.FileIO.ReadTextAsync(file);
using (StringReader sr = new StringReader(read))
{
Test test = new Test(getFloatArray(sr));
this.array = test.printArray();
}
}
private float[] getFloatArray(StringReader sr) { ... }
public class Test
{
public float[] floatArray;
public Test(float[] floatArray)
{
this.floatArray = floatArray;
}
public float[] printArray()
{
for (int i = 0; i < floatArray.Length; i++)
{
Debug.WriteLine(floatArray[i]);
}
return floatArray;
}
}