Я новичок в программировании и изучаю C# для разработки приложений для Windows 8. Я использую книгу «Head First C# - 3rd Edition». Первый пример, похоже, терпит неудачу. Для тех, у кого есть книга, это указано на стр. 33. В приведенном ниже коде я удалил ненужные методы и оставил только соответствующий код.Запрошенное поле недоступно для справки
public sealed partial class MainPage : Save_the_Humans.Common.LayoutAwarePage
{
public MainPage()
{
Random random = new Random();
this.InitializeComponent();
}
private void startButton_Click(object sender, RoutedEventArgs e)
{
AddEnemy();
}
private void AddEnemy()
{
ContentControl enemy = new ContentControl();
enemy.Template = Resources["EnemyTemplate"] as ControlTemplate;
AnimateEnemy(enemy, 0, playArea.ActualWidth - 100, "(Canvas.Left)");
AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100),
random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)");
playArea.Children.Add(enemy);
}
private void AnimateEnemy(ContentControl enemy, double from, double to, string propertyToAnimate)
{
Storyboard storyBoard = new Storyboard() { AutoReverse = true, RepeatBehavior = RepeatBehavior.Forever };
DoubleAnimation animation = new DoubleAnimation()
{
From = from,
To = to,
Duration = new Duration(TimeSpan.FromSeconds(random.Next(4, 6)))
};
Storyboard.SetTarget(animation, enemy);
Storyboard.SetTargetProperty(animation, propertyToAnimate);
storyBoard.Children.Add(animation);
storyBoard.Begin();
}
}
Проблема заключается в использовании созданного экземпляра поля «случайным». Ошибка времени компиляции говорит: «Имя« случайный »не существует в текущем контексте». Я недостаточно разбираюсь в том, что может вызвать проблему.
AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100),
random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)");
Большое спасибо за ваш ответ. Есть ли у вас какие-либо идеи, почему авторы специально отмечают, что это поле? Кроме того, я знаю, что я ошибаюсь в этом, но если бы это было «Random random = new Random();», не создало бы новую переменную «Random» с именем «random», не объявив ее вне конструктора ? – RAB
Возможно, авторы только что сделали ошибку. Пример, который вы предоставили, действительно просто делает экземпляр Random доступным только внутри вашего конструктора. Опять же, наверное, ошибка с их стороны! Я был бы признателен за правильность, если ваша проблема решена! :) –