2011-08-26 69 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(); 
    } 
}