2014-11-02 127 views
-1

我是C#編程的新手,我不太瞭解它的語法或者它的工作原理,但是我一直在學習,而且它已經相當不錯了。我試圖將我最近用Python編寫的程序中的一個轉換爲C#,以便它可以在Windows上運行而無需安裝Python。而且我必須改變很多方法來轉換它,而且這需要很長時間才能完成,但我一直在研究大部分內容。然而,這個問題對我來說絕對沒有意義。我已經爲double'b1'賦了一個值和一個類型,但它告訴我,我不能在b2的定義中使用它。C#未分配變量?

  double b; 
      double b1; 
      double b2; 
      if (noSlope == true) 
       b = 0; 
      else 
       b1 = slopem * Convert.ToDouble(x1); 
       b2 = Convert.ToDouble(y1) - b1; 
       b = b2; 

Visual Studio一直告訴我'b1'是一個未指定的局部變量。我以爲我只是把它分配在上面的線上?任何人都可以告訴我爲什麼這樣做,或者如何給b1賦值,以便它可以被使用?提前致謝!

+0

你的主要問題是缺乏'{}'後'else'的。 – 2014-11-02 19:21:56

回答

9

在c#塊中使用{}標記,而不是縮進。您當前的代碼就相當於

double b; 
double b1; 
double b2; 
if (noSlope == true) 
{ 
    b = 0; 
} 
else 
{ 
    b1 = slopem * Convert.ToDouble(x1); 
} 
b2 = Convert.ToDouble(y1) - b1; 
b = b2; 

正如你所看到的,當條件評估爲true你不會有b1分配。

PS。你可以重寫你的代碼

double b; 
if (noSlope == true) 
{ 
    b = 0; 
} 
else 
{ 
    b = Convert.ToDouble(y1) - slopem * Convert.ToDouble(x1); 
} 

甚至

double b = noSlope ? 0 : Convert.ToDouble(y1) - slopem * Convert.ToDouble(x1);