Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.NullReferenceException基于列表<;int>;_C#_Winforms_Nullreferenceexception - Fatal编程技术网

C# System.NullReferenceException基于列表<;int>;

C# System.NullReferenceException基于列表<;int>;,c#,winforms,nullreferenceexception,C#,Winforms,Nullreferenceexception,我正在尝试遍历行并获取它们的索引(来自SQL的主键)。我在“this.SelectRowIndexes.Add(ResourceKey)”上得到了一个NRE,我不明白为什么会有问题,我该如何解决这个问题 代码: 您可以实例化一个局部变量 List<int> SelectRowIndexes = new List<int>(); 这样改变这个 private void GetIndexes() { this.SelectRowIndexes = new List&

我正在尝试遍历行并获取它们的索引(来自SQL的主键)。我在“this.SelectRowIndexes.Add(ResourceKey)”上得到了一个NRE,我不明白为什么会有问题,我该如何解决这个问题

代码:


您可以实例化一个局部变量

List<int> SelectRowIndexes = new List<int>();
这样改变这个

private void GetIndexes()
{
    this.SelectRowIndexes = new List<int>();
    for (int i = 0; i < gridViewRecords.Rows.Count; i++)
    {
        DataRowView drv = (DataRowView)gridViewRecords.CurrentRow.DataBoundItem;
        DataRow selectedRow = drv.Row;
        ResourceKey = Convert.ToInt32(selectedRow["ResourceAndInstallKey"]);
        this.SelectRowIndexes.Add(ResourceKey);
    }
}
private void getindex()
{
this.SelectRowIndexes=新列表();
对于(int i=0;i
实例化局部变量

List<int> SelectRowIndexes = new List<int>();
这样改变这个

private void GetIndexes()
{
    this.SelectRowIndexes = new List<int>();
    for (int i = 0; i < gridViewRecords.Rows.Count; i++)
    {
        DataRowView drv = (DataRowView)gridViewRecords.CurrentRow.DataBoundItem;
        DataRow selectedRow = drv.Row;
        ResourceKey = Convert.ToInt32(selectedRow["ResourceAndInstallKey"]);
        this.SelectRowIndexes.Add(ResourceKey);
    }
}
private void getindex()
{
this.SelectRowIndexes=新列表();
对于(int i=0;i
如果
this.SelectRowIndexes
为空,您实际想做什么?目前,您只是无条件地对其调用
Add
,因为
if
语句的两个分支做相同的事情

请注意,如果您给它分配了一个新值,它肯定不会为null,但在这一行中,您声明了一个名为
SelectRowIndexes
的新局部变量:

List<int> SelectRowIndexes = new List<int>();

如果
this.SelectRowIndexes
为空,您实际想做什么?目前,您只是无条件地对其调用
Add
,因为
if
语句的两个分支做相同的事情

请注意,如果您给它分配了一个新值,它肯定不会为null,但在这一行中,您声明了一个名为
SelectRowIndexes
的新局部变量:

List<int> SelectRowIndexes = new List<int>();

如果SelectRowIndexes为空,则无法向列表中添加任何内容。首先需要使用初始化空列表

this.SelectRowIndexes = new List<int>();
this.SelectRowIndexes=new List();

如果SelectRowIndexes为空,则无法向列表中添加任何内容。首先需要使用初始化空列表

this.SelectRowIndexes = new List<int>();
this.SelectRowIndexes=new List();

使用
关键字可以访问类范围内名为
SelectRowIndexes
的成员。该成员可能未初始化。删除
列表
类型声明,它将是完美的

private List<int> SelectRowIndexes;
private void GetIndexes()
{
    SelectRowIndexes = new List<int>();
    for (int i = 0; i < gridViewRecords.Rows.Count; i++)
    {
        DataRowView drv = (DataRowView)gridViewRecords.CurrentRow.DataBoundItem;
        DataRow selectedRow = drv.Row;
        ResourceKey = Convert.ToInt32(selectedRow["ResourceAndInstallKey"]);
        if (this.SelectRowIndexes == null)
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
        else
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
    }
}
私有列表选择行索引;
私有void getindex()
{
SelectRowIndexes=新建列表();
对于(int i=0;i
使用
关键字可以访问类范围内名为
SelectRowIndexes
的成员。该成员可能未初始化。删除
列表
类型声明,它将是完美的

private List<int> SelectRowIndexes;
private void GetIndexes()
{
    SelectRowIndexes = new List<int>();
    for (int i = 0; i < gridViewRecords.Rows.Count; i++)
    {
        DataRowView drv = (DataRowView)gridViewRecords.CurrentRow.DataBoundItem;
        DataRow selectedRow = drv.Row;
        ResourceKey = Convert.ToInt32(selectedRow["ResourceAndInstallKey"]);
        if (this.SelectRowIndexes == null)
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
        else
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
    }
}
私有列表选择行索引;
私有void getindex()
{
SelectRowIndexes=新建列表();
对于(int i=0;i
最初我没有if语句。最初我没有if语句。if语句是我在另一块上尝试的东西,现在已经不存在了。我现在更新代码,而不是这个。非常感谢。我应该知道的。@KevinFischer:你根本不需要
这个
,除非你的作用域中有一个同名的局部变量……很好。我的大德夫喜欢用“这个”来形容它。他们的协议。非常感谢。again@KevinFischer当前位置发布大量答案后,编辑问题中的代码是个坏主意。你现在已经否定了各种答案的要点。我会编辑我的,但如果你保持原样会更好…if语句是我在另一篇文章中尝试的东西,现在已经不存在了。我现在更新代码,而不是这个。非常感谢。我应该知道的。@KevinFischer:你根本不需要
这个
,除非你的作用域中有一个同名的局部变量……很好。我的大德夫喜欢用“这个”来形容它。他们的协议。非常感谢。again@KevinFischer当前位置发布大量答案后,编辑问题中的代码是个坏主意。你现在已经否定了各种答案的要点。我将编辑我的,但如果您保持原样会更好…现在更新代码的行是:List SelectRowIndexes=new List();删除前面的列表以初始化类的属性,而不是局部变量;删除前面的列表以初始化类的属性,而不是局部变量。对于if()@cdkMoose的两个路径,您的代码是相同的,这是正确的。我只是复制了他的代码并进行了修补。@cdkMoose看来他已经编辑了他的原始帖子,删除了多余的if-else。我将把它作为一种永恒的文件形式留在我的答案中;我看到凯文编辑了
private List<int> SelectRowIndexes;
private void GetIndexes()
{
    SelectRowIndexes = new List<int>();
    for (int i = 0; i < gridViewRecords.Rows.Count; i++)
    {
        DataRowView drv = (DataRowView)gridViewRecords.CurrentRow.DataBoundItem;
        DataRow selectedRow = drv.Row;
        ResourceKey = Convert.ToInt32(selectedRow["ResourceAndInstallKey"]);
        if (this.SelectRowIndexes == null)
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
        else
        {
            this.SelectRowIndexes.Add(ResourceKey);
        }
    }
}