은 'fixin 필요 몇 가지가 있습니다 : 당신이 그것을 사용하기 위해 DiceClass
클래스의 인스턴스를 만들 필요가 거라고 그래서
- 귀하의
DiceRoll
인스턴스 메서드입니다.
- 변수는 로컬 변수이므로 메서드가 완료되면 사용할 수 없습니다. 대신 수업의 공개 속성으로 만들 수 있습니다.
- 메서드가 호출 될 때마다
Random
을 새로 인스턴스 할 필요가 없습니다. 실제로는 Random
에 시스템 시계를 기반으로하는 값이 입력되어 있기 때문에 문제가 발생할 수 있습니다. 따라서 메서드가 매우 빠르게 호출되면 같은 번호를 반복해서 만들어 낼 것입니다.) 그냥 정적으로 만들 수 있고 한 번 인스턴스화 할 수 있습니다.
Roll
메서드에 대한 인수가 min
및 max
이므로이 값을 사용하지 않아야합니까? 현재 0
및 6
이 하드 코드되어 있습니다.
- 형식 문자열을 사용하려면 대괄호 (
[]
) 대신에 curley braces ({}
)를 사용해야합니다.
- 마지막으로 명명 규칙의 관점에서 사용자는 클래스 이름의 일부로
Class
이라는 단어가 필요 없으며 메서드 이름의 일부로 Dice
이 필요하지 않습니다. 이것은 타이핑의 양을 단순화 할 것이고 여전히 이해할 수있을 것입니다.
단일 Die
개체를 나타내는 클래스를 만드는 일을 생각하고, 그것을 Roll()
방법 및 Value
속성을 줄 수있는 무엇.그런 다음 사용자가 원하는만큼을 만들 수 있으며, 목록에 보관 :
public class MatchPlay
{
public void Match()
{
// Add three Die objects to our list of dice
List<Die> dice = new List<Die>
{
new Die(), new Die(), new Die()
};
Console.WriteLine("Starting Match Play...");
Console.WriteLine();
Console.WriteLine("Round One");
// Roll all dice
dice.ForEach(d => d.Roll());
Console.WriteLine("Your first dice is {0}", dice[0].Value);
Console.WriteLine("Your second dice is {0}", dice[1].Value);
Console.WriteLine("Your third dice is {0}", dice[2].Value);
}
}
을 마지막으로 우리가 경기를 찰 수, 다음과 같이 이제
public class Die
{
public int Value { get; set; }
// Make this static and instantiate it only once to avoid re-seeding issues
private static readonly Random rnd = new Random();
public Die()
{
Value = 1;
}
public void Roll()
{
// This method uses values 1-6 as a standard die
Roll(1, 6);
}
public void Roll(int minValue, int maxValue)
{
Value = rnd.Next(minValue, maxValue + 1);
}
}
, 당신은 Die
클래스를 사용할 수 있습니다 Main
방법의 경우 :
private static void Main()
{
MatchPlay game = new MatchPlay();
game.Match();
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
클래스는 개체가 아닙니다. 예를 들어 청사진과 같습니다. DieClass 타입의 객체와 객체를 인스턴스화하여 객체로 사용해야합니다. [ask]를 읽고 [둘러보기]를 가져 가야합니다. – Plutonix
먼저 C# 기본 사항을 알아야합니다. DiceRoll 정적 메소드를 만들거나 DieClass를 인스턴스화하십시오. 또한 min, max 매개 변수를 전달하십시오. 인쇄하려면 값을 반환해야합니다. – Sunil