2013-03-29 2 views
0

몇 가지 콘솔 응용 프로그램을 개발하기 위해 C#에서 프로그래밍을 시작했는데보다 효율적인 방법으로 다른 이름으로 특정 수의 변수를 만들 수 있는지 궁금합니다. 지금은 다음과 같이하고 있습니다.다른 이름으로 특정 수의 변수를 만드는 방법은 무엇입니까?

for(int i=1; i<=x; i++) 
    switch(i) { 
     case 1: 
      Player player1=new Player(i, x); 
      break; 
     case 2: 
      Player player2=new Player(i, x); 
      break; 
     case 3: 
      Player player3=new Player(i, x); 
      break; 
     case 4: 
      Player player4=new Player(i, x); 
      break; 
     case 5: 
      Player player5=new Player(i, x); 
      break; 
     case 6: 
      Player player6=new Player(i, x); 
      break; 
    } 

나는이 문제를 해결할 더 효과적인 방법이 있는지, 그 방법이 무엇인지 궁금합니다.

var players = new Player[x]; 
for (int i = 0; i < x; i++) 
{ 
    players[i] = new Player(i, x); 
} 

또는 Linq에를 사용하십시오 :

+3

적어도 배열을 사용하십시오. 또는 [컬렉션 클래스] (http://msdn.microsoft.com/en-gb/library/ybcx56wz(v=80) .aspx)를 사용하십시오. –

+0

무엇을하고 싶니? 'x' 선수를 만들고 싶다면,'switch'는 쓸모가 없습니다. – niculare

답변

7

당신은 배열을 더 나을 것

var players = Enumerable.Range(0, x) 
         .Select(i => new Player(i, x)) 
         .ToArray(); 

그런 다음 당신이 만든 플레이어를 참조 할 수 있습니다.

var player1 = players[0]; // Note: array indexes start at 0 

물론 실제로 배열을 사용할 필요는 없습니다. 다른 많은 컬렉션 클래스가 문제에 더 잘 맞을 수 있습니다.

추가 읽기 :

0

나는 C#으로하지 프로그램을하지만, 로컬 변수를 만드는 것 : 그들은 단지 루프에 유효 .

변수를 루프 외부에 이름을 지정한 다음 내부에 만듭니다. 당신은 그들과 함께 일할 수 있는지 테스트해야 할 것입니다.

1

당신은 그런 메모리가 런타임에 배포 할 것입니다 선수

var players = new List<Player>; 

for (int i = 0; i < x; i++) 
{ 
    players.add(new Player(i, x)); 
} 

의 목록을 만들 수 있습니다.

배열의 크기를 미리 알아야하기 때문에 배열을 사용하지 않는 것이 좋습니다. 목록을 사용하면 값을 동적으로 할당 할 수 있으며 목록의 현재 상태만큼만 메모리에서 많은 공간을 차지합니다. 그냥 트릭에 대한

0

는 :

partial class Player { 
    public Player(int i, int x) { 
     this.Ordinal=i; 
    } 

    public int Ordinal { 
     get; 
     set; 
    } 

    public static int Total { 
     get; 
     set; 
    } 

    public delegate Trick Trick(out Player x); 

    public static Trick Create(out Player x) { 
     x=new Player(++Player.Total, 0); // the second int doesn't matter 
     return Create; 
    } 
} 

partial class TestClass { 
    public static void TestMethod() { 
     Player mom, dad, brother, sister, me; 
     Player.Create(out mom)(out dad)(out brother)(out sister)(out me); 
    } 
} 

당신은 당신이 Player 개 이상의 시리즈가 일단 Total을 구현하는 또 다른 방법을 정의 할 수 있습니다.

관련 문제