创建实例时使用static关键字
本文关键字:static 关键字 实例 创建 | 更新日期: 2023-09-27 18:22:03
我发现了以下代码。
public class Test
{
public static Test Create()
{
return new Test
{
a1 =1,
b1="abc"
};
}
:
:
:
}
在调用类中,它被实例化为如下
static Test model = Test.Create();
上一行中static
关键字的用途是什么?如果我们不使用static
关键字,会有什么不同?我正在使用.NET 4和VS 2010
编辑
我知道c#中的static
是什么。我问这个问题的主要原因是为什么在创建类的实例时使用它?
在这个具体呈现的代码中,看不到使用这种技术的意义,但通常这样做可以控制类型实例的创建。
例如:想象你的类与客户端的一些COM对象交互,这些对象不能实例化10次以上。为了控制API的使用者不会创建超过10个您类型的实例,您可以使用此技术。
public class MyComWrapper {
private MyComWrapper () {} // MAKE CTOR PRIVATE SO NOONE CAN CREATE
// AN INSTANCE OF YOUR CLASS IF NOT WITH
// `static` METHOD CALL
static int counter = 0; //INSTANCE COUNTER
public static MyComWrapper Create()
{
if(counter >10) //MORE THEN 10, BAD !
throw new InvalidOperationException("Can not instantiate more then 10 instances");
counter ++;
return new Test
{
a1 =1,
b1="abc"
};
}
}
static关键字使其在不实例化对象的情况下可用。作者正在创建一个函数来以特定的方式实例化对象,但由于它是默认的构造函数,任何人都可以实例化它
虽然不是唯一的,但这是Singleton模式中常用的一种模式,同时也使构造函数私有。
Static
修饰符属于类型本身,而不是特定对象。
您不必创建一个实例来使用该静态函数。您可以直接使用静态函数,而无需创建类的实例。
如果static关键字应用于类,则该类的所有成员都必须是静态的。
这很简单。它们是static
的单独用途。第一个方法在非静态类中创建一个静态方法。第二个创建了一个"calling"类的静态成员。
你的Test
类本身不是静态的,所以你可以实例化它
为了回答您的问题:如果您在调用类中不使用static
关键字,它将是一个"普通"实例成员。