1

当我返回字符串 timeTaken 时,它为空,并且它在 IDE 上这样说,尽管它已在 main 方法中定义(TimeSpan timeTaken = timer.Elapsed;)

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?

4

4 回答 4

3

你定义一个同名的局部变量

TimeSpan timeTaken

它隐藏了您的静态类字段。

要输出 timer.Elapsed 的值,你可以这样写:

Console.WriteLine("{0}", timer.Elapsed);
于 2011-08-26T08:33:02.640 回答
0

有两个 timeTaken 变量,一个是 Main 函数的本地变量,另一个是类的静态成员。要显式引用字符串,请使用Program.timeTaken. 如果您将代码重构为具有不同的名称,无论如何都会更好。

于 2011-08-26T08:33:35.980 回答
0

static void Main(...)您犯了一个简单的错误:您在行内再次定义变量“timeTaken”

TimeSpan timeTaken = timer.Elapsed;

这将影响静态定义。回到静态类字段使用

Program.timeTaken = ...

考虑命名(例如命名您的静态字段_timeTaken 或仅使用

timeTaken = timer.Elapsed;

代替

TimeSpan timeTaken = timer.Elapsed;
于 2011-08-26T08:35:48.297 回答
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();
  }
}
于 2011-08-26T08:35:49.800 回答