2014-09-28 2 views
-2

개체에 값을 편집하고 다시 호출하려는 경우 문제가 발생합니다. 새 값 대신 이전 값이 나타납니다. 클래스 여기개체에서이 값을 수정할 수없는 이유는 무엇입니까?

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; 
} 

예 여기

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 
     }; 
    } 

이 값을 업데이트하는 내 기능입니다 : 여기

는 클래스를 얻을 내 기능입니다 : 이전 값은 "123"이었습니다. ChangeAnnouncement 함수를 호출하고 값을 "1234567890"으로 설정 한 것입니다. GetClanByID (ID) .Description을 사용하는 값이지만 이전 값 ("123")을 계속 가져옵니다.

나는 당신을 도와 줄 수 있기를 바랍니다.

+1

이렇게하면 변경할 수있는 구조체를 만들지 않아야합니다. – SLaks

+1

구조체를 선언하지 않았습니다 ... 왜 그 구조에 대해 이야기하고 있습니까? 클랜을 찾지 못하면 새 템플릿을 만들고 있지만 컬렉션에 추가하지는 않습니다. –

+0

질문이 편집되었습니다. 당신은 '구조'라고 말했지만 수업을 사용했기 때문에 모든 멘션을 '구조'로 떨어 뜨 렸습니다. C#의 특별한 의미로 '구조'. 하나 들어, 그들은 불변으로되어 있습니다. 실제로 구조는 만들지 않았지만 클래스를 만들었습니다. – zmbq

답변

1

매번 새로운 클랜을 반환합니다. 새로 생성 된 클랜을 Clans에 추가하는 것을 잊었습니다.

+0

새로 만든 클랜을 클랜에 추가합니다. – lokko

+1

@lokko 그러면 코드 외부에서 발생합니다. –

+0

오, 아마도 당신이 1을 바꿀 클랜의 모드입니까? – zmbq

관련 문제