C#中构造函数和属性之间的区别

时间:2013-08-07 14:49:28

标签: c#

我是编程新手,有人可以在C#的上下文中解释构造函数和属性之间的区别。 因为两者都用于初始化你的类字段,&也是在特定情况下选择哪一个。

3 个答案:

答案 0 :(得分:2)

除了所有技术内容之外,一个好的经验法则是使用构造函数参数作为必需的东西,可选事物的属性。

您可以忽略属性(因此是可选的),但您不能忽略构造函数参数(因此是必需的)。

对于其他所有内容,我建议您阅读C#初学者书籍或教程; - )

答案 1 :(得分:1)

属性只是一个可以在任何时候初始化的类成员。

像这样:

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

构造函数在创建类时运行,可以执行各种操作。在你的“场景”中,它可能会用于初始化成员,以便在创建时类处于有效状态。

像这样:

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

答案 2 :(得分:1)

构造函数是一种特殊类型的方法,可以从类中创建对象本身。您应该使用它来初始化使对象按预期工作所需的所有内容。

来自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;
   }
}

属性应该用于验证传递的值,例如:

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;

希望这有助于您理解!有关C#的更多信息,请查看Object-Oriented Programming (C# and Visual Basic)