2013-08-07 2 views
-4

Я новичок в программировании, может кто-то объяснить мне разницу между конструктором и свойством в контексте C#. , так как оба используются для инициализации полей вашего класса, &, и какой из них выбрать в данной ситуации.Разница между конструктором и свойствами в C#

+3

http://stackoverflow.com/questions/863045/what-is-the-preferred-way-of-constructing-objects-in-c-constructor-parameters – slavoo

+1

Это совершенно разные вещи. – Tyler

+0

Вы пытались посмотреть учебники и другие темы об этом? – Arran

ответ

2

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

Вы можете игнорировать свойства (следовательно, необязательно), но вы не можете игнорировать параметры конструктора (следовательно, обязательно).

Для всего остального, я бы рекомендовал чтение C# начинающих книгу или учебник ;-)

1

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

Как так:

var myClass = new MyClass(); 
myClass.PropertyA = "foo"; 
myClass.PropertyB = "bar"; 

Конструктор запускается, когда создается класс и может делать различные вещи. В вашем «сценарии» он, вероятно, будет использоваться для инициализации членов, чтобы класс находился в правильном состоянии при создании.

Как так:

var myClass = new MyClass("foo", "bar"); 
0

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

От MSND Constructor:

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

Свойства включить класс для хранения, настройки и выставить необходимые значения для объекта. Вы должны создать, чтобы помочь в поведении для класса.

От MSND Property:

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

Пример:

public class Time 
{ 
    // 
    // { get; set; } Using this, the compiler will create automatically 
    // the body to get and set. 
    // 
    public int Hour { get; set; } // Propertie that defines hour 
    public int Minute { get; set; } // Propertie that defines minute 
    public int Second { get; set; } // Propertie that defines seconds 

    // 
    // Default Constructor from the class Time, Initialize 
    // each propertie with a default value 
    // Default constructors doesn't have any parameter 
    // 
    public Time() 
    { 
     Hour = 0; 
     Minute = 0; 
     Second = 0; 
    } 


    // 
    // Parametrized Constructor from the class Time, Initialize 
    // each propertie with given values 
    // 
    public Time(int hour, int Minute, int second) 
    { 
     Hour = hour; 
     Minute = minute; 
     Second = second; 
    } 
} 

свойства должны быть использованы для проверки значения, переданные, а также, для Exemple:

public int Hour 
{ 
    //Return the value for hour 
    get 
    { 
    return _hour; 
    } 
    set 
    { 
    //Prevent the user to set the value less than 0 
    if(value > 0) 
     _hour = 0; 
    else 
     throw new Exception("Value shoud be greater than 0"); 
} 
private int _hour; 

Hopes это поможет вам понять! Для получения дополнительной информации о C# посмотрите на Object-Oriented Programming (C# and Visual Basic).