标签: equality

myVariable(int)== 0与myVariable(Guid)== Guid.Empty相同

我最近转换了一堆表格PK的,从intuniqueidentifier.现在在我的代码中,我正在替换某些检查,如下所示:

if (planDiagnosisID != 0)
Run Code Online (Sandbox Code Playgroud)

if (planDiagnosisID != Guid.Empty)
Run Code Online (Sandbox Code Playgroud)

planDiagnosisIDint在第一和Guid第二.

这准确吗?

.net c# guid equality uniqueidentifier

1
推荐指数
1
解决办法
147
查看次数

Python If语句永远不会评估为True

如果我的问题看似微不足道,我道歉.我宁愿在聊天室里问这个问题; 但是,目前我的声誉太低了,所以我无法在Python聊天室中提出任何问题.我目前正在学习Python课程,老师给了我们一些练习题,让我们开始学习.我正在构建的函数现在采用数字列表并将其转换为字符串.我遇到的问题是我的if语句永远不会评估为true.我已经尝试了几种方法来处理变量,并添加了许多打印语句,以确定它们是否应该相等,但无济于事.再次感谢您的提前.我保证我只是在研究和尝试很多方法后才会问,但现在我不知所措......这是我的代码:

def nlist2string(nlist):
    characters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    numbers = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25']
    newList = []
    nListLen = len(nlist)         # var msgLen will be an integer of the length

    print 'Number list before conversion: ', nlist

    index = 0
    while index < nListLen:
        print 'Index at: ', nlist[index]
        num = nlist[index]
        print 'Is num equal to nlist indexed? ', num
        newNum = num % 26

        i = 0
        while i < 26:
            num1 = newNum
            num2 = numbers[i]
            print 'num1 = ', num1 …
Run Code Online (Sandbox Code Playgroud)

python if-statement equality

1
推荐指数
1
解决办法
486
查看次数

IEqualityComparer和IEquatable在Enumerable.SequenceEqual方法中的作用是什么

MSDN上的这个页面上,他们描述SequenceEqualEnumerable该类的方法.

在页面中间,它指出:

如果要比较序列中对象的实际数据而不是仅仅比较它们的引用,则必须在类中实现IEqualityComparer泛型接口.以下代码示例演示如何在自定义数据类型中实现此接口,并提供GetHashCode和Equals方法.

然后他们展示了一个例子,他们根本不实现IEqualityComparer<T>接口,而是实现接口IEquatable<T>.我自己完成了测试,没有实现IEqualityComparer或IEquatable,只是简单地覆盖了Object的Equals,我发现它可以解决问题.这是样本:

class AlwaysEquals
{
    override public bool Equals(Object o)
    {
        return true;
    }
    public override int GetHashCode()
    {
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我的类AlwaysEquals什么都不实现,没有IEquatable,没有IEqualityComparer,什么都没有.但是,当我运行此代码时:

AlwaysEquals ae1 = new AlwaysEquals();
AlwaysEquals ae2 = new AlwaysEquals();
AlwaysEquals ae3 = new AlwaysEquals();
AlwaysEquals[] Ae1 = new AlwaysEquals[] {ae3, ae2, ae3};
AlwaysEquals[] Ae2 = new AlwaysEquals[] {ae1, ae1, ae1};
Console.WriteLine(Ae1.SequenceEqual(Ae2));
Run Code Online (Sandbox Code Playgroud)

..我得到的True并不False像我期望的那样阅读文档.这实际上是如何工作的?

.net linq equality

1
推荐指数
1
解决办法
691
查看次数

错误:无效操作数到二进制==(有'struct demo'和'struct demo')

代码1:

struct demo
{
    int a;
}d[2];

int main()
{
    d[0].a=5;
    d[1]=d[0];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常

代码2:

struct demo
{
    int a;
}d[2];

int main()
{ 
    d[0].a=5;
    d[1]=d[0];
    if(d[0]==d[1])
    {
        printf("hello");
    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码给出错误

error: invalid operands to binary == (have 'struct demo' and 'struct demo')
Run Code Online (Sandbox Code Playgroud)

为什么在Code 2中出现此错误?

c arrays struct compiler-errors equality

1
推荐指数
2
解决办法
2万
查看次数

在T-SQL中是否存在精确的字符串比较?

我已经搜索了很多答案,但我还没有找到以下简单任务的解决方案:

我有一个冗长的TextString,并希望找到与其中的字符串'Text'完全匹配.

TextString LIKE '% Text %'
Run Code Online (Sandbox Code Playgroud)

给出所有出现的'text'和'Text',也开始和/或结束一个单词.我只想要出现'Text'(区分大小写),带有前面和后面的''.

我知道SPACES 的行为LIKE=相对于SPACES 的行为,所以没有必要再次解释这个问题,因为它已在本网站的其他地方完成.

t-sql sql-server equality sql-like

1
推荐指数
1
解决办法
3067
查看次数

如何使Python对象始终返回true以进行相等性测试?

编辑:以下代码有一个简单的错误,实际上没有说明问题.我把它留在这里(未经修正),但我仍然对底部问题的答案感到好奇.

我在Python中有以下对象,应该总是为相等测试返回true:

class Wildcard(object):
    def __eq__(self, other):
        return True
Run Code Online (Sandbox Code Playgroud)

它在某些情况下有效,但不是全部:

>>> w = Wildcard()
>>> w == 'g'
True
>>> 'g' == w
True
>>> w == 10
True
>>> 10 == 'w'
False
Run Code Online (Sandbox Code Playgroud)

根据我的理解,==运算符将第二个操作数传递给第一个操作符的__ eq__方法,这解释了为什么w == 10有效但10 == w没有.这提出了两个问题.首先,是否可以构造具有此属性的对象,而不管它是哪个操作数?其次,为什么这对字符串起作用,而不是int?String的__ eq__方法如何将'g'== w评估为True?

python equality object

1
推荐指数
2
解决办法
698
查看次数

__eq__属性和相等运算符之间的关系?

所以下面的内置类有一个__eq__属性,(我假设)是你可以测试它们的实例是否相等的原因:

>>> 1.2.__eq__( 1.2 )
True
>>> 1.2 == 1.2
True
>>> 'hello'.__eq__( 'hi' )
False
>>> 'hello' == 'hi'  
False
>>> [1,2].__eq__( [1,2] )
True
>>> [1,2] == [1,2]  
True
Run Code Online (Sandbox Code Playgroud)

然后我很惊讶地看到int物体没有__eq__,但我们仍然可以比较它们:

>>> hasattr( 1, '__eq__' )
False
>>> 1 == 2 
False
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?我是否误解__eq__了平等运算符之间的关系?

python equality operators python-2.7

1
推荐指数
1
解决办法
61
查看次数

C#:为什么以下比较表明0!= 0

我最近在一些比较代码中偶然发现了有趣的错误,其中两个对象的属性都等于0.0m.当该属性转换为int并进行比较时,比较永远不会相等.复制如下:

采用抽象A和两个实现B和C:

public abstract class A
{
    public decimal MyProp { get; set; }
}

public class B : A
{
}

public class C : A
{
}
Run Code Online (Sandbox Code Playgroud)

抽象定义了几个公共属性,主要是但不完全是十进制.所有公共属性都是原始属性.具体的子类型表示从两个不同的数据源获得的这种抽象.当且仅当它们的所有公共属性相等时,A类型的两个对象才被认为是相等的.需要注意的是:使用默认的舍入行为(MidpointRounding.ToEven),所有十进制属性都应在比较前转换为int.这导致了以下比较代码:

private static bool Compare(A a1, A a2)
{
    var propertiesList = typeof(A).GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();
    foreach (var propertyInfo in propertiesList)
    {
        var value1 = propertyInfo.GetValue(a1);
        var value2 = propertyInfo.GetValue(a2);

        if (propertyInfo.PropertyType == typeof(decimal))
        {
            value1 = Convert.ToInt32(value1);
            value2 = Convert.ToInt32(value2);
        }

        // debugger confirms that value1 is 0 and …
Run Code Online (Sandbox Code Playgroud)

c# reflection autoboxing equality

1
推荐指数
1
解决办法
195
查看次数

"subst"的分布

假设我有一个传递关系~有两个endomaps fg.假设f并且g在任何地方f a ~ f b ~ f c 都同意然后有两种方式可以显示g a ~ g c:通过给定的等式将每个f转换为a g然后应用传递性,或者应用传递性然后沿着相等性转换.结果证明是否相同?显然是这样,

open import Relation.Binary.PropositionalEquality

postulate A : Set
postulate _~_  : A ? A ? Set
postulate _?~~?_ : ?{a b c} ? a ~ b ? b ~ c ? a ~ c
postulate f g : A ? A

subst-dist : ?{a b c}{ef : f a ~ f …
Run Code Online (Sandbox Code Playgroud)

equality agda dependent-type

1
推荐指数
1
解决办法
98
查看次数

如果object2 = object1,则引用equals返回false

我有这段代码:

Rect a = new Rect(0, 0, 4, 4);
Rect b = new Rect(0, 0, 4, 4);
print(Object.ReferenceEquals(a, b)); //prints false
print(Object.ReferenceEquals(a, a)); //prints false
b = a;
print(Object.ReferenceEquals(a, b)); //prints false
Run Code Online (Sandbox Code Playgroud)

我希望能够确定引用是否是内存中的同一对象,因此对该对象的引用相同.因此第一次打印应该返回false,第二次打印应该返回true.该Rect是Unity引擎,但我可以在我自己的类包装,并覆盖equals如果需要做.然而,我希望第6行打印,true因为它a = b会将两个变量指向相同的参考.

c# equality

1
推荐指数
1
解决办法
119
查看次数