分配变量C#的问题

时间:2011-08-26 08:28:43

标签: c# .net stopwatch

当我返回字符串timeTaken时,它为null,它在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 个答案:

答案 0 :(得分:3)

您可以定义具有相同名称的本地变量

TimeSpan timeTaken

隐藏了您的静态类字段。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

TimeSpan timeTaken = timer.Elapsed;

这将影响静态定义。要返回静态类字段,请使用

Program.timeTaken = ...

考虑命名(例如命名静态字段_timeTaken 或者只是使用

timeTaken = timer.Elapsed;

而不是

TimeSpan timeTaken = timer.Elapsed;

答案 3 :(得分: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();
  }
}