c#静态类属性

Rid*_*ick 5 c# static static-members

我今天已经向我展示了一个例子,并且只想检查以下两者是否实际上具有相同的效果,而不是,它们之间的区别是什么.

这是:

private static Service1Client _myFoo;

static ServiceLayer()
{
    MyFoo = new Service1Client();
}

public static Service1Client MyFoo
{
    get { return _myFoo; }
    set { _myFoo = value; }
}
Run Code Online (Sandbox Code Playgroud)

这是一个冗长的方式:

public static Service1Client _myFoo
{
    get { return _myFoo; }
    set { _myFoo = value; }
}

static ServiceLayer()
{
    _myFoo = new Service1Client();
}
Run Code Online (Sandbox Code Playgroud)

如果不是这样,那么它们之间有什么区别?

谢谢.

its*_*e86 10

您需要支持字段,因为:

public static Service1Client _myFoo
{
    get { return _myFoo; }
}
Run Code Online (Sandbox Code Playgroud)

....就像你在你的例子中将永远循环.

但是,C#确实提供了自动属性.你可以用这个简单的代码完成同样的事情:

public static Service1Client MyFoo { get; set; }

static ServiceLayer()
{
    MyFoo = new Service1Client();
}
Run Code Online (Sandbox Code Playgroud)