有没有办法让班级中定义的财产成为必修课? 如果在没有强制属性的情况下声明和使用对象,我希望编译器抱怨。
答案 0 :(得分:6)
我认为最好的方法是不指定默认构造函数。
public class MyClass
{
public MyClass(string myProp)
{
MyProp = myProp;
}
public string MyProp { get; set; }
}
答案 1 :(得分:3)
如何在类中添加一个构造函数来获取属性值?
public class MyClass
{
public int Mandatory {get; set;}
public int Optional {get; set;}
public MyClass(int mandatory)
{
Mandatory = mandatory;
}
public MyClass(int mandatory, int optional)
{
Mandatory = mandatory;
Optional = optional;
}
}
这样,可以使用一个或两个参数构造函数来实例化类,因此用户必须为Mandatory
属性指定一个值。
MyClass x = new MyClass(); // does not compile
MyClass x = new MyClass(1); //Mandatory = 1; Optional = 0 (default value)
MyClass x = new MyClass(1,2);//Mandatory = 1; Optional = 2
答案 2 :(得分:3)
不,你不能强迫某人向房产提供信息。
但是,您可以转到正常路径,并使构造函数需要该信息。这样,如果没有提供您需要的信息,就无法构建对象。
答案 3 :(得分:3)
一种方法可能是实现一个构造函数,强制创建一个对象,使其具有属性的初始值:
class Demo
{
public int P {get; set;}
Demo(int p)
{
P = p;
}
}
现在客户端只能通过传递p:
的值来创建对象var d = new Demo(42);
答案 4 :(得分:1)
您可以在类中添加一个构造函数,该构造函数接受一个参数 - 属性的值。像这样,在创建类的实例后,该属性总是被初始化。
答案 5 :(得分:1)
使默认构造函数为private,并定义将为您的属性获取所需值的构造函数
public YourClass(string value)
{
YourCompulsaryProperty = value;
}
public string YourCompulsaryProperty{get; set;}