我是编程新手,有人可以解释一下 C# 上下文中构造函数和属性之间的区别。因为两者都用于初始化您的类字段,以及在给定情况下选择哪一个。
问问题
4306 次
3 回答
3
除了所有技术性的东西,一个好的经验法则是对强制的东西使用构造函数参数,对可选的东西使用属性。
您可以忽略属性(因此是可选的),但您不能忽略构造函数参数(因此是必需的)。
对于其他一切,我建议阅读 C# 初学者书籍或教程;-)
于 2013-08-07T14:55:13.373 回答
1
属性只是一个可以随时初始化的类成员。
像这样:
var myClass = new MyClass();
myClass.PropertyA = "foo";
myClass.PropertyB = "bar";
构造函数在创建类时运行,可以做各种事情。在您的“场景”中,它可能用于初始化成员,以便类在创建时处于有效状态。
像这样:
var myClass = new MyClass("foo", "bar");
于 2013-08-07T14:54:41.243 回答
1
构造函数是从类中创建对象本身的一种特殊类型的方法。您应该使用它来初始化使对象按预期工作所需的一切。
从 MSND构造函数:
创建类或结构时,会调用其构造函数。构造函数与类或结构同名,它们通常初始化新对象的数据成员。
属性使类能够存储、设置和公开对象所需的值。您应该创建以帮助班级的行为。
来自 MSND属性:
属性是提供灵活机制来读取、写入或计算私有字段值的成员。属性可以像公共数据成员一样使用,但它们实际上是称为访问器的特殊方法。这使得数据可以轻松访问,并且仍然有助于提高方法的安全性和灵活性。
例子:
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# 的更多信息,请查看面向对象编程(C# 和 Visual Basic)。
于 2013-08-07T15:07:31.783 回答