Я написал следующий класс, чтобы вернуть случайное число, как прокатке кости:Понимание классов и случайный
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GameTest
{
class Dice
{
public int publicMinNum
{
get { return _minNum; }
set { _minNum = value; }
}
public int publicMaxNum
{
get { return _maxNum; }
set { _maxNum = value; }
}
static int _minNum;
static int _maxNum;
static Random diceRoll = new Random();
public int rolled = diceRoll.Next(_minNum, _maxNum);
}
}
Этот класс называется пару раз в моей форме:
private void btnPushMe_Click(object sender, EventArgs e)
{
Dice myRoll = new Dice();
myRoll.publicMinNum = 1;
myRoll.publicMaxNum = 7;
lblMain.Text = myRoll.rolled.ToString();
Dice mySecondRoll = new Dice();
mySecondRoll.publicMinNum = 1;
mySecondRoll.publicMaxNum = 13;
lblMain2.Text = mySecondRoll.rolled.ToString();
}
Как вы можете видеть, я дважды вызываю класс myRoll
и mySecondRoll
. Я думал, что, делая это, он будет создавать отдельные экземпляры класса и вывода два отдельных номера (один от 1 до 6, а другой 1 и 12)
Проблемы, которые я имею являются:
1) первый номер всегда равен 0.
2) два экземпляра класса мешают друг другу, т. е. число, которое должно быть от 1 до 6, - это не так.
Мне интересно, а не только, как исправить код, но также хотелось бы объяснить, что здесь происходит и почему, спасибо.
Спросить учебники (или другие общие вопросы) не являются конструктивными , не соответствуют формату Q & A сайтов Stack Exchange и приводят к обсуждению. –
С этим кодом возникает несколько проблем. Ваши целые поля min и max не должны быть статичными, ваше свернутое поле не должно быть общедоступным и не инициализировано так, как оно есть. Но в основном, вы правы, что вам нужен лучший учебник, но, к сожалению, это не тема для этого сайта. Я проголосовал за закрытие как не конструктивное. –
http://www.blackwasp.co.uk/CSharpClassProperties.aspx – Learner