我有一点问题,VS给了我2个关于两个值(int []和string [])的警告,这些值是null,因为它们从未被分配,但我确定我分配了它们,这是代码的一部分这与我的问题有关:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ComponentFactory.Krypton.Toolkit;
using System.IO;
namespace DA_Story_Editor
{
public partial class Form1 : ComponentFactory.Krypton.Toolkit.KryptonForm
{
public Form1()
{
InitializeComponent();
}
int[] pntrs;
string[] Strs;
private void ReadFile(string path1)
{
FileStream stream = new FileStream(path1, FileMode.Open, FileAccess.Read);
for (int i = 0; i < Pntrnum; i++)
{
stream.Position = Pntrstrt;
stream.Read(data, 0, data.Length);
pntrs[i] = BitConverter.ToInt32(data, 0);
}
for (int i = 0; i < Pntrnum; i++)
{
byte[] sttrings = new byte[pntrs[i + 1] - pntrs[i]];
stream.Position = pntrs[i];
stream.Read(sttrings, 0, sttrings.Length);
Strs[i] = Encoding.GetEncoding("SHIFT-JIS").GetString(sttrings);
ListViewItem item = new ListViewItem(new string[]
{
pntrs[i].ToString("X"),
Strs[i],
Strs[i],
});
listView1.Items.AddRange(new ListViewItem[] {item});
}
}
}
}
我不确定为什么它会给我这些警告,顺便说一下它也给我一个“NullReferenceException”就行:pntrs[i] = BitConverter.ToInt32(data, 0);
答案 0 :(得分:4)
您永远不会构建和分配变量本身 - 但您尝试使用该数组:
// Need to add:
pntrs = new int[Pntrnum];
for (int i = 0; i < Pntrnum; i++)
{
stream.Position = Pntrstrt;
stream.Read(data, 0, data.Length);
pntrs[i] = BitConverter.ToInt32(data, 0);
}
// Need to add:
Strs = new string[Pntrnum];
for (int i = 0; i < Pntrnum; i++)
{
byte[] sttrings = new byte[pntrs[i + 1] - pntrs[i]];
stream.Position = pntrs[i];
stream.Read(sttrings, 0, sttrings.Length);
Strs[i] = Encoding.GetEncoding("SHIFT-JIS").GetString(sttrings);