为什么我不能在对象中修改这些值?
问题描述:
我有一个问题,如果我想编辑一个值到一个对象并再次调用它,我会得到旧值而不是新值。为什么我不能在对象中修改这些值?
这里是我的职责,以获取类:
public static Clan GetClanByID(int Index)
{
foreach (Clan Clan in Clans)
{
if (Clan.ID == Index)
{
return Clan;
}
}
return new Clan()
{
ID = -1,
Name = "NULL",
IconID = -1
};
}
这里是我的功能来更新值:
public static void ChangeAnnouncement(int ClanID, int Mode, string Text)
{
if (ClanID != -1)
{
Clan Clan = GetClanByID(ClanID);
if (Mode == 0)
{
Clan.Description = Text;
}
else if (Mode == 1)
{
Clan.News = Text;
}
}
}
这里是类:
public class Clan
{
public int ID;
public int LeaderID;
public int Extension;
public int CreationDate;
public long EXP;
public long IconID;
public string Name;
public string News;
public string Description;
public List<ClanWars> ClanWars;
public List<ClanUsers> Users;
public List<ClanCoMasters> CoMasters;
public List<ClanPendingUsers> PendingUsers;
public LeaderInformations LeaderInformations;
}
例:旧的值是“123”,比我称为ChangeAnnouncement的函数,并将值设置为“1234567890”,之后我得到该值使用GetClanByID(ID).Description,但我仍然会得到旧值(“123”)
我希望你能帮助我。
这就是为什么你不应该使可变的结构。 – SLaks 2014-09-28 17:26:30
你还没有宣布任何结构......你为什么要谈论它们?请注意,如果你没有找到一个家族,你正在创建一个新家族 - 但不会将它添加到你的收藏中。 – 2014-09-28 17:28:14
我编辑了你的问题。你说'结构'但是使用了一个类,所以我把所有的提到都放到了'结构'中。 'Structure'在C#中是一个特殊的含义。首先,它们应该是不可变的。你实际上并没有创建一个结构,而是一个班级。 – zmbq 2014-09-28 17:32:01