2011-08-26 41 views
1

當我返回字符串timeTaken,它是空的,它表示,這對IDE到,儘管它在主要方法被定義(時間跨度timeTaken = timer.Elapsed)問題的分配變量C#

class Program 
{  
    public static string timeTaken;  

    static void Main(string[] args) 
    {     
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);  
     Stopwatch timer = new Stopwatch(); 
     timer.Start();    
     using (var response = request.GetResponse()); 
     timer.Stop();  
     TimeSpan timeTaken = timer.Elapsed; 
     ... 
    } 
}    

如何輸出timeTaken?

+1

變量不是字符串.. – James

+1

「當我返回字符串...」代碼不返回任何字符串。 – 2011-08-26 08:33:34

回答

3

您可以定義具有相同名稱

TimeSpan timeTaken 

其中隱藏您的靜態類領域的局部變量。

要輸出timer.Elapsed的價值,你可以寫這樣的事情:

Console.WriteLine("{0}", timer.Elapsed); 
+0

沒有'ToString()',這肯定會失敗嗎? – Coops

+0

@CodeBlend:不會的。試一試 – Jan

0

在兩個timeTaken變量,一個局部rthe主要功能,另外一個是類的靜態成員。要明確引用字符串,請使用Program.timeTaken。無論如何,如果你重構代碼以使其具有不同的名字,那麼更好。

0

你犯了一個低級錯誤:你上線

TimeSpan timeTaken = timer.Elapsed; 

這將影靜態定義再次定義裏面static void Main(...)變量「timeTaken」。要回到靜態類領域使用

Program.timeTaken = ... 

想想命名(例如命名靜態字段_timeTaken 或只使用

timeTaken = timer.Elapsed; 

,而不是

TimeSpan timeTaken = timer.Elapsed; 
+1

靜態沒有「this」 – UrbanEsc

+0

他不能使用這個。因爲該字段是靜態的。他只能使用Program.timeTaken訪問靜態字段。 –

+0

doh ...當然...謝謝 – Carsten

0

你可能想更像這樣的東西: -

class Program 
{ 
    public static string timeTaken; 
    static void Main(string[] args) 
    { 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline); 
    System.Diagnostics.Stopwatch timer = new Stopwatch(); 
    timer.Start(); 
    using (var response = request.GetResponse()) 
    timer.Stop(); 
    timeTaken = timer.Elapsed.ToString(); 
    } 
}