所以基本上我想创建一个扩展的布尔值。基础有一个Equals,CompareTo函数,但我想创建一个bool类型,它有一些其他函数,方法......
例如:
extbool eb = true;
var pos = eb.position
或
eb.get...()
是否有可能在C#中执行此操作?
答案 0 :(得分:5)
我不太确定布尔类型上其他方法的用途,但您可以使用extension methods。
示例(将返回类型更改为您需要的任何内容):
public static class BoolExtensions
{
public static int Position(this bool val)
{
return 2;
}
}
称之为:
bool foo = false;
int position = foo.Position();
答案 1 :(得分:4)
您可以定义自己的类并将隐式转换运算符覆盖为boolean:
public static implicit operator extbool (bool instance)
{
//implicit cast logic
return extbool ;
}
现在你可以轻松地做到:
extbool a = true;
反之亦然:
public static implicit operator bool (extbool instance)
{
//implicit cast logic
return extbool ;
}
这应该让你也可以对布尔值进行比较。 这是一篇很好的文章,解释了一切
http://www.codeproject.com/Articles/93160/Operator-Overloading-with-Implicit-and-Explicit-Ca