2015-10-02 2 views
0

Я видел одиночный код, который использует функцию без круглых скобок. Я хотел знать, существует ли какая-либо разница между функцией без круглых скобок и функцией с круглыми скобками, которая не принимает аргументов. Вот в коде public static MySingleton Instance не имеет круглые скобки:
(Код для единства по пути и написанные в C#)объявить функцию без круглых скобок в C#

public class MySingleton 
{ 
    private static MySingleton instance; 

    public MySingleton() 
    { 
     if (instance != null) 
     { 
      Debug.LogError ("Cannot have two instances of singleton."); 
      return; 
     } 
     instance = this; 
    } 

    public static MySingleton Instance 
    { 
     get 
     { 
      if (instance == null) 
      { 
       new MySingleton(); 
      } 
     return instance; 
     } 
    } 
} 
+0

Подробнее о [Свойства] (https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx) –

+0

Вопрос связан как [дубликат] (http://stackoverflow.com/questions/5096926/what -is-the-get-set-syntax-in-c) объясняет, что такое «методы без скобок», а http://stackoverflow.com/questions/601621/properties-vs-methods обсуждает, где использовать свойство или метод. Возможно, вы спрашиваете о чем-то более глубоком, что «какие свойства» - возможно, потребуется уточнить, какую другую информацию вы ищете. –

+0

Кроме того, вы знаете, эта реализация синглтона никогда не будет работать. Вы должны обратиться к [этому] (http://csharpindepth.com/Articles/General/Singleton.aspx). – KOTIX

ответ

2

public static MySingleton Instance не метод, но Property

MSDN документация

Свойство - это элемент, который обеспечивает гибкое механизм для чтения, записи или вычисления значения частного поля. Свойства можно использовать так, как если бы они были публичными элементами данных, но на самом деле это специальные методы, называемые accessors. Это позволяет легко получать доступ к данным и все еще помогает повысить безопасность и гибкость методов.

С собственностью вы можете предоставить доступ к своему частному члену во внешний код. Если вы даете только «получить» доступ, вы делаете его только для чтения.

Здесь вы раскрываете экземпляр своего частного участника как собственности.

+0

Вы бы объяснили имущество? – Parham

+2

@Parham Это, возможно, не то, о чем этот сайт. [Проверьте это] (http://www.amazon.com/Programming-Beginners-Introduction-Step-Step/dp/1507707614/ref=pd_sim_sbs_14_1?т.е. = UTF8 & refRID = 0DV56PR06CBXQSV9D6JV & dpID = 51j800ipMpL & dpSrc = sims & perst = _AC_UL160_SR107% 2C160_) – MickyD

2

Хотя оба они работают одинаково, они фактически являются двумя отдельными вещами.

MySingleton() Метод. (проверка Смирение для не обращая внимания)

Method блоки кода, которые могут или не могут иметь параметры, которые при вызове, будут выполняться в любой содержащий код и либо возвращают объект или ничтожным.

MySingleton Instance является Property. Свойства позволяют получить/установить доступ к объектам внутри класса/структуры.

Хотя теоретически вы можете делать с ними похожие вещи, в зависимости от того, как вы их используете; цель совсем другая.

На боковой ноте ваш конструктор MySingletion() должен быть закрытым в типичном шаблоне Singleton. Вы можете увидеть несколько разных реализаций мистера Скита из одноэлементного here.

+0

_ "MySingleton() - это метод." _ - Неправильно. 'MySingleton()' - это метод _constructor_ not a _ "_. Один конструктор не вызывает в конструкторе так же, как метод. Конструкторы не имеют возвращаемого значения, а методы могут. – MickyD

+0

Вы абсолютно правы, я был слишком сосредоточен на названии, а не на том, что было представлено на самом деле. Я уточню, когда у меня появится шанс. –

+0

Нет проблем Ричард, дайте мне знать, когда вы отредактируете, чтобы я мог удалить -1 :) Хороший день – MickyD

 Смежные вопросы

  • Нет связанных вопросов^_^