gpt4 book ai didi

c# - 将项目添加到列表 string[]

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:37 25 4
gpt4 key购买 nike

我正在尝试使用此结构将从 DataTable 获得的几行添加到我的列表中:

protected struct roleProperties
{
public string roleName { get; set; }
public string[] functionTitle { get; set; }
}

如您所见,我希望在方法 Title string

中添加更多字符串

我一直在尝试这样做:

public void getRoleFuncs(int roleId)
{
List<roleProperties> roles = new List<roleProperties>();
int i = 1;

SqlParameter ro_id = new SqlParameter("@ro_id", roleId);
string q = "SELECT ro_name, fu_title FROM roles INNER JOIN rolefunctions ON roles.ro_id = rolefunctions.fk_role_id INNER JOIN functions ON rolefunctions.fk_func_id = functions.fu_id WHERE ro_id = @ro_id";
SqlDataReader r = gm.returnReader(q, ro_id);
while (r.Read())
{
roleProperties item = new roleProperties();
item.roleName = r["ro_name"].ToString();
foreach (IDataRecord str in r)
{
item.functionTitle[i] = r["fu_title"].ToString();
i++;
}
roles.Add(item);
}
}

但是我在这一行得到了一个空引用:

item.functionTitle[i] = r["fu_title"].ToString();

谁能看出我做错了什么?

最佳答案

item.functionTitlenull 因为数组是引用类型并且您尚未在任何地方初始化属性(因此它具有默认值:null 用于引用类型)。

即使这不是问题(假设 functionTitle 是一个空数组)item.functionTitle[i] 也会再次抛出,因为它试图访问一个索引出界了。最后,您遇到一个差一错误:数组中的第一个元素的索引为 0,而不是 1

您可以通过将代码更改为来解决上述所有问题

while (r.Read())
{
roleProperties item = new roleProperties();
item.roleName = r["ro_name"].ToString();
item.functionTitle = r.Select(o => o["fu_title"].ToString()).ToArray();
roles.Add(item);
}

关于c# - 将项目添加到列表 string[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com