C# 有没有办法通过另一个类访问列表元素属性
我有以下代码:C# 有没有办法通过另一个类访问列表元素属性,c#,arrays,C#,Arrays,我有以下代码: public class settings { public appConfig conf = new appConfig(); public void getUserID(int listIndex, int newID) { conf.users[listIndex].ID = newID; } private class appConfig { public List<user> use
public class settings
{
public appConfig conf = new appConfig();
public void getUserID(int listIndex, int newID)
{
conf.users[listIndex].ID = newID;
}
private class appConfig {
public List<user> users;
public appConfig()
{
users = new List<user>();
}
}
}
public class user {
public int ID;
}
如何更改代码,以便按如下方式访问:
var set = new settings();
set.userPropertys(listIndex).ID = newID;
set.userPropertys(listIndex).ID = newID;
set.userPropertys[listIndex].ID = newID;
public user userPropertys(int listIndex)
{
return conf.users[listIndex];
}
我应该如何声明
userPropertys
?它是一个方法还是一个新类还是什么?如果我理解正确,您不需要调用setUserID()
方法,而是需要一种检索user
对象并直接修改其属性的方法。至少有两种明显的方法可以做到这一点(为了清晰起见,保留代码中拼写错误的名称):
也就是说,正如你在问题中所说的那样
或者
即,与方括号索引器语法一起使用
请注意,我对原始代码所做的唯一“修复”是将
config
类型添加到conf
字段声明中。您不会显示config.users
字段的任何实际初始化,如果您希望访问列表
对象,当然需要该字段。我同意Jon关于命名约定和公开(或者更确切地说,不公开)字段作为公共成员的建议。是的,如果userPropertys
是一种返回类型为user
的对象的方法,那么您可以这样做。如果是,签名如下:
var set = new settings();
set.userPropertys(listIndex).ID = newID;
set.userPropertys(listIndex).ID = newID;
set.userPropertys[listIndex].ID = newID;
public user userPropertys(int listIndex)
{
return conf.users[listIndex];
}
其用法如下所示:
int listIndex = 0;
int newID = 12;
var set = new settings();
set.userPropertys(listIndex).ID = newID ;
能否请您借助此验证此建议请提供一个-您目前提供的代码无法编译。我还强烈建议您遵循.NET命名约定,即使只是提供小样本代码。(我还建议不要公开公共字段…)是否应该将
userPropertys
作为一种方法,在listIndex
位置返回listitem?现在我看不到的是,如果我不将这些属性公开,如何访问它们?如果每次我都有一枚镍币,我就太接近问题,看不到明显的,那么。。。你明白了。:)“我不明白,如果我不把这些房产公开的话,如何进入它们”——我不知道你的意思。诸如public
、protected
等可访问性修饰符用于控制对成员的访问。如果希望外部代码具有访问权限,可以使用public
。为什么不想使用public
?我想我不明白这一点:我同意Jon关于命名约定和公开(或者更确切地说,不公开)字段作为公共成员的建议。公共错误集在哪里?与其说public
本身是错误的,还不如说字段一般不应该作为public
成员公开。主要的异常是只读
字段,但即使是这样,也只是偶尔出现。参见,例如,和