如何强制一个C#类中有一个常数值



可能的重复:
有办法强制C#类实现某些静态函数吗?

考虑一个类,并考虑到由于某些原因,您需要强制该类内部有一个常量。这将应用于任何一组类。在我的特定情况下,我需要我的一些类在它们内部有一个常量来保存相应的null值。

在我的情况下,那些实现特定接口的类,因为它们必须以特定的方式运行,它们还必须具有我的上下文中所需的三个特殊值(上下文太长,无法解释,在这里非常无用)。

因此,基本上我需要一种方法来强制我的类内部有一个特定的常量(可以从外部访问)。我知道我可以简单地把常量放在这些类中,但如果我正在寻找一种方法来告诉编译器:"如果这个类实现了这个接口(例如),那么如果没有常量,你就不应该编译它!"。

通过这种方式,编译器会进行检查,而不仅仅是程序员可能会忘记输入常量。

我希望我能解释我的问题。提前谢谢。

所以基本上我需要一种方法来强制我的类内部恒定(可从外部访问)。我知道我可以简单地把常数放在这些类中,但是如果我在寻找告诉编译器:"如果这个类实现了这个接口(例如),如果没有常数".

您可以通过创建一个包含唯一公共构造函数的类来实现类似的功能,该构造函数需要您所需的所有/值。例如,您可以使用以下内容:

class myClass{
public readonly int Value1;
public readonly string Value2;
public myClass(int value1, string value2){
Value1 = value1;
Value2 = value2;
}
}

事实上,在这种情况下,程序员被迫实例化对象,为可用的唯一构造函数提供正确的值,并且不能更改两个公共字段的值(由于只读关键字)。

关于同一主题的前一个问题的解释:

对静态方法的调用是通过类名完成的,而不是通过对象引用,调用它的IL代码将调用抽象方法,而不一定是通过定义它的类的名称您使用的类的名称。

上一篇文章:为什么可以';我在C#中没有抽象的静态方法吗?

将静态方法添加到类中有什么问题?我不明白为什么你需要另一个层,因为在静态方法中直接编码到类中是完全合乎逻辑的。

public class MyClass {
public static MyClass TheMethod(int i){
// TODO:
}
}

最新更新