0

如果您DBBool在 C# 中查找实现,则返回时几乎没有重载运算符(逻辑运算符|、、、&!。我相信这是没有必要的,而且有点浪费内存。DBBool 是一个结构,当它被传递给一个方法时会生成一个副本,所以没有理由这样做。

// Logical negation operator. Returns True if the operand is False, Null 
// if the operand is Null, or False if the operand is True. 
public static DBBool operator !(DBBool x)
{
    return new DBBool(-x.value);
}
// Logical AND operator. Returns False if either operand is False, 
// Null if either operand is Null, otherwise True. 
public static DBBool operator &(DBBool x, DBBool y)
{
    return new DBBool(x.value < y.value ? x.value : y.value);
}
// Logical OR operator. Returns True if either operand is True,  
// Null if either operand is Null, otherwise False. 
public static DBBool operator |(DBBool x, DBBool y)
{
    return new DBBool(x.value > y.value ? x.value : y.value);
}

不加新应该就是这样。

public static DBBool operator !(DBBool x)
{
    if (x.value > 0) return False;
    if (x.value < 0) return True;
    return Null;
}
public static DBBool operator &(DBBool x, DBBool y)
{
    return x.value < y.value ? x : y;
}
public static DBBool operator |(DBBool x, DBBool y)
{
    return x.value > y.value ? x : y;
}
4

1 回答 1

4
  1. 它是一个结构,所以“new”真正的意思是“在堆栈上初始化一个值”——这很便宜而且与新对象不同
  2. 大多数结构是不可变的;我猜这也是;因此它不能只改变参数值并返回它 - 它必须用所需的内容初始化一个新值
于 2012-08-22T22:22:16.100 回答