Статическое ключевое слово при создании экземпляра

Я натолкнулся на следующий код.

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

РЕДАКТИРОВАТЬ

Я знаю, что static в С#. Основная причина, по которой я задал этот вопрос, - почему он используется при создании экземпляра класса?

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" 

 };
 }
}


Ключевое слово static делает его доступным без создания экземпляра объекта. Автор создает функцию для создания экземпляра объекта определенным образом, но поскольку это конструктор по умолчанию, любой может его создать.

Хотя и не исключительно, наряду с закрытием конструктора, это шаблон, обычно используемый в шаблоне Singleton.


Это просто. Они представляют собой отдельные применения static. Первый создает статический метод в нестационарном классе. Второй создает статический член класса "вызов".

Сам Test класс не является статичным, поэтому вам разрешено его создавать.

Чтобы ответить на ваш вопрос: если вы не используете ключевое слово static в вызывающем классе, это будет "обычный" экземплярный член.


Static модификатор принадлежит самому типу, а не конкретному объекту.

Вам не нужно создавать экземпляр для использования этой статической функции. вы можете напрямую использовать статическую функцию, не создавая экземпляр класса.

Если ключевое слово static применяется к классу, все члены класса должны быть статическими.

licensed under cc by-sa 3.0 with attribution.