我正在尝试在课堂上做一个财产。在属性初始化后无法更改的地方该怎么办?
这些是实际的说明:
在现有名称空间中创建一个类,可以在现有代码中 文件或新文件中,以磅为单位表示污垢量 样品。在此类(a)中,不要创建构造函数。 (b)继承 沙子类(利用沙子属性)。 (c)向 代表样品名称。一次不能更改此属性 (d)添加一个属性来表示和处理分配 粘土的数量,最小值为0。(e)将方法添加到 返回样品的重量,样品中砂的百分比 和样品中粘土的百分比。
我在(c)部分。我试图排除二传手。然后,我尝试使用只读,但由于我的类不能具有构造函数,因此它无法工作。
public class AmountSand //parent class
{
public class AmountSand {
private double quantity;
public double Sand {
get {
return quantity;
}
set {
if (value >= 0) quantity = value;
}
}
}
public class AmountDirt: AmountSand { //part (b): inherited the parent class, AmountSand
private string name = null;
private double clay;
public string Name { //here is where the specific property starts
get {
return name;
}
set {
if (name == null)
name = value;
}
} //ends
public double Clay {
get {
return clay;
}
set {
if (value >= 0) clay = value;
}
}
答案 0 :(得分:0)
取决于您希望将其初始化的位置。
编辑:对不起,我没有读到您的课程可能有ctor,但是为了完整起见,我会保留此内容。您的班级没有老师似乎有点不可思议。请问为什么?
来自ctor:
class MyClass
{
public MyClass()
{
Name = "Muhammed";
}
public MyClass(string newName)
{
Name = newName;
}
public string Name{get;}
}
如果您希望从类外部对其进行初始化,则您的代码距离不太远。您甚至可以删除支持属性。我会用
if(string.IsNullOrEmpty(Name))
而不是与null进行比较。
如果您希望通过类中的方法进行设置:
public string Name{get; private set;}
答案 1 :(得分:0)
字符串本质上已经是不可变的,因此您需要阐明您要完成的工作。
但是,如果您只是不想让其他任何东西能够设置除类本身之外的值,那么可以将设置的访问器设为私有。