如何防止方法在 C# .NET 中接受 2 false bool?
How to prevent a method from accepting 2 false bool in C# .NET?
我有一个带有此签名的方法:
public static void DirFillWEx(ComboBox cb, bool dirFill, bool fileFill);
这个放在我自己写的一个dll库里。
我的问题是:有没有一种方法可以指示 Visual Studio 此方法不能将两个 bool 值都接受为 false,因此我在编译时(不是运行时!)出现错误?
例如:
DirFillWEx(my_cb, false, true);
DirFillWEx(my_cb, true, true);
DirFillWEx(my_cb, true, false);
但不是
DirFillWEx(my_cb, false, false);
谢谢大家!
您可以定义一个枚举:
enum FillMode
{
Dir,
File,
Both
}
然后键入您的方法来获取枚举:
public static void DirFillWEx(ComboBox cb, FillMode fillMode);
我认为你不能在编译时这样做,但你可以在函数开始时这样做:
public static void DirFillWEx(ComboBox cb, bool dirFill, bool fileFill)
{
if(!dirFill && !fileFill)
{
return;
}
}
你还可以做的是当你调用函数时:
if(!dirFill && !fileFill)
{
}
else
{
DirFillWex(cb, dirFill, fileFill);
}
不对,您误解了编译器的工作原理。您的方法签名允许传递 bool 值,您不能强制对传递的值进行编译时检查,只能检查类型。
您可以在调用端或方法内部进行运行时检查,以检查参数是否处于有效状态,然后再继续。
可能有一些方法可以根据您建议的目的重写编译器,但显然这样做表明您的设计存在问题。
您可以按照 Sean 的建议通过枚举进行值限制,但这并没有回答您原来的问题 - 不,您不能 (easily/feasibly) 在 C# 的编译时限制传递给函数的值。
我有一个带有此签名的方法:
public static void DirFillWEx(ComboBox cb, bool dirFill, bool fileFill);
这个放在我自己写的一个dll库里。 我的问题是:有没有一种方法可以指示 Visual Studio 此方法不能将两个 bool 值都接受为 false,因此我在编译时(不是运行时!)出现错误?
例如:
DirFillWEx(my_cb, false, true);
DirFillWEx(my_cb, true, true);
DirFillWEx(my_cb, true, false);
但不是
DirFillWEx(my_cb, false, false);
谢谢大家!
您可以定义一个枚举:
enum FillMode
{
Dir,
File,
Both
}
然后键入您的方法来获取枚举:
public static void DirFillWEx(ComboBox cb, FillMode fillMode);
我认为你不能在编译时这样做,但你可以在函数开始时这样做:
public static void DirFillWEx(ComboBox cb, bool dirFill, bool fileFill)
{
if(!dirFill && !fileFill)
{
return;
}
}
你还可以做的是当你调用函数时:
if(!dirFill && !fileFill)
{
}
else
{
DirFillWex(cb, dirFill, fileFill);
}
不对,您误解了编译器的工作原理。您的方法签名允许传递 bool 值,您不能强制对传递的值进行编译时检查,只能检查类型。
您可以在调用端或方法内部进行运行时检查,以检查参数是否处于有效状态,然后再继续。
可能有一些方法可以根据您建议的目的重写编译器,但显然这样做表明您的设计存在问题。
您可以按照 Sean 的建议通过枚举进行值限制,但这并没有回答您原来的问题 - 不,您不能 (easily/feasibly) 在 C# 的编译时限制传递给函数的值。