有可能创建扩展布尔值吗?

时间:2013-11-24 23:56:37

标签: c#

所以基本上我想创建一个扩展的布尔值。基础有一个Equals,CompareTo函数,但我想创建一个bool类型,它有一些其他函数,方法......

例如:

extbool eb = true;

var pos = eb.position

eb.get...()

是否有可能在C#中执行此操作?

2 个答案:

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