Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用秒表对应用程序使用情况进行基准测试_C#_Oop_Class_Stopwatch - Fatal编程技术网

C# 使用秒表对应用程序使用情况进行基准测试

C# 使用秒表对应用程序使用情况进行基准测试,c#,oop,class,stopwatch,C#,Oop,Class,Stopwatch,您好,我正在尝试制作一个全局类,我可以在我的项目中使用,我打算使用它作为我的默认模板,我是一个新手,所以请耐心等待;) 我怀疑我的设计有根本缺陷,因为我想要秒表Masterstopwatch=新秒表();要在不使用方法的情况下全局声明,我怀疑这是不可能的,但我需要问一下 谢谢听起来你需要这个 如果您按照以下方式声明stopwatch的包装器,您可以在应用程序中的任何位置使用它,并访问stopwatch的相同实例 // Declare singleton wrapper of a stopwatc

您好,我正在尝试制作一个全局类,我可以在我的项目中使用,我打算使用它作为我的默认模板,我是一个新手,所以请耐心等待;)

我怀疑我的设计有根本缺陷,因为我想要秒表Masterstopwatch=新秒表();要在不使用方法的情况下全局声明,我怀疑这是不可能的,但我需要问一下 谢谢

听起来你需要这个

如果您按照以下方式声明stopwatch的包装器,您可以在应用程序中的任何位置使用它,并访问stopwatch的相同实例

// Declare singleton wrapper of a stopwatch, which instantiates stopwatch
// on construction
public class StopwatchProxy 
{
    private Stopwatch _stopwatch;
    private static readonly StopwatchProxy _stopwatchProxy = new StopwatchProxy();

    private StopwatchProxy()
    {
        _stopwatch = new Stopwatch();
    }

    public Stopwatch Stopwatch { get { return _stopwatch; } } 

    public static StopwatchProxy Instance
    { 
        get { return _stopwatchProxy; }
    }
}

// Use singleton
class Foo
{
    void Foo()
    {
        // Stopwatch instance here
        StopwatchProxy.Instance.Stopwatch.Start();
    }
}

class Bar
{
    void Bar()
    {
        // Is the same instance as here
        StopwatchProxy.Instance.Stopwatch.Stop();
    }
}

我在这里看不到正确的单例。这根本不是线程安全的。我敢肯定是这样的,因为.NET运行时确保每个AppDomain只调用一次
private static readonly\u stopwatchProxy=new stopwatchProxy()
。有关infoHa,请参阅。我不知道。你每天都会学到新东西。公平地说,我也必须检查;-)节省了双重锁定和所有的shebang。当被问到一个迂腐的面试问题时也很方便!
// Declare singleton wrapper of a stopwatch, which instantiates stopwatch
// on construction
public class StopwatchProxy 
{
    private Stopwatch _stopwatch;
    private static readonly StopwatchProxy _stopwatchProxy = new StopwatchProxy();

    private StopwatchProxy()
    {
        _stopwatch = new Stopwatch();
    }

    public Stopwatch Stopwatch { get { return _stopwatch; } } 

    public static StopwatchProxy Instance
    { 
        get { return _stopwatchProxy; }
    }
}

// Use singleton
class Foo
{
    void Foo()
    {
        // Stopwatch instance here
        StopwatchProxy.Instance.Stopwatch.Start();
    }
}

class Bar
{
    void Bar()
    {
        // Is the same instance as here
        StopwatchProxy.Instance.Stopwatch.Stop();
    }
}