The*_*ist 1 c# constructor explicit
是否有类似于C#中构造函数的explicit关键字?它似乎只影响C#中的强制转换操作符.
举个例子:
public Foo( long value )
{
m_value = value;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种使以下代码无法编译的方法:
int bar = 10;
Foo fail = new Foo( bar );
Run Code Online (Sandbox Code Playgroud)
这可能在C#中吗?
Guf*_*ffa 14
您可以通过添加构造函数的重载来引发编译器错误,该构造函数int会将其标记为过时:
public class Foo {
private long m_value;
public Foo(long value) {
m_value = value;
}
[Obsolete("The constructor has to be called with a long value, not an int value.", true)]
public Foo(int value) {}
}
Run Code Online (Sandbox Code Playgroud)
通过指定它true作为第二个参数Obsolete将导致编译器错误而不是通常的警告.