强制要求财产

时间:2011-03-30 14:07:15

标签: c# properties

有没有办法让班级中定义的财产成为必修课?   如果在没有强制属性的情况下声明和使用对象,我希望编译器抱怨。

6 个答案:

答案 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;}