我遇到了以下代码。
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
是什么。我问这个问题的主要原因是为什么在创建类的实例时使用它?
答案 0 :(得分:4)
在这个具体的呈现的代码中,看不到使用这种技术的多少,但通常 您可以这样做以控制您的类型实例创建。
例如:immagine您的类与客户端的某个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"
};
}
}
答案 1 :(得分:3)
static关键字使其无需实例化对象即可使用。作者正在创建一个以特定方式实例化对象的函数,但由于它是默认构造函数,任何人都可以实例化它。
虽然不是唯一的,但同时将构造函数设为私有,这是Singleton Pattern中常用的模式。
答案 2 :(得分:0)
Static
修饰符属于类型本身,而不属于特定对象。
您不必创建实例即可使用static函数。您可以直接使用static函数,而无需创建类的实例。
如果将static关键字应用于类,则该类的所有成员都必须是静态的。
答案 3 :(得分:0)
很简单。它们是static
的单独用途。第一个在非静态类中创建静态方法。第二个创建“调用”类的静态成员。
您的Test
类本身不是静态的,因此您可以实例化它。
回答你的问题:如果你不在调用类中使用static
关键字,它将是一个“普通”实例成员。