2014-12-19 26 views
1

我下面這本書的步驟「腦友好的嚮導:深入淺出C#」由O'Reilly媒體C#持續時間是一個類型,但使用像變量

而且所遇到的這個錯誤'Windows.UI.Xaml.Duration' is a 'type' but is used like a 'variable'

當插入此代碼Duration = new Duration(TimeSpan.FromSeconds(random.Next(4, 6)));

我想知道爲什麼我得到這個錯誤,我能做些什麼來解決它?

下面是代碼的完整方法,如果它有幫助,如果它只是造成混亂,並使用戶難以閱讀文本,我將刪除該方法已被描述在書中。

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(); 
      } 
+1

'新DoubleAnimation是();'分號終止的聲明。 – 2014-12-19 04:08:40

回答

4

編譯器是想告訴你,你不能在匿名類型與類型Duration的名字命名一個字段,因爲你的初始化語法是不正確的:你把分號new DoubleAnimation()後,所以的休息初始化器被視爲獨立的代碼塊。

下面是正確的語法:

DoubleAnimation animation = new DoubleAnimation { 
    From = from, 
    To = to, 
    Duration = new Duration(TimeSpan.FromSeconds(random.Next(4, 6))) 
}; 

我去掉括號new DoubleAnimation後,因爲調用的是默認的構造函數取得。我還用逗號替換了分號以符合C#語法。

+0

我同意。你以1秒的力量擊敗了我。 – 2014-12-19 04:06:08

1

傑西指出,應刪除分號,並用逗號替換它們:

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(); 
      } 
相關問題