C# 如何比较';Infinityscript.Vector3';
我在做一个小程序,到了需要比较两个InfinityScript.Vector值的地步。我不知道该怎么做。我尝试使用==运算符,但失败了 运算符“==”不能应用于“InfinityScript.Vector3”和“InfinityScript.Vector3”类型的操作数 我的最后一次尝试绝对是错误的:C# 如何比较';Infinityscript.Vector3';,c#,C#,我在做一个小程序,到了需要比较两个InfinityScript.Vector值的地步。我不知道该怎么做。我尝试使用==运算符,但失败了 运算符“==”不能应用于“InfinityScript.Vector3”和“InfinityScript.Vector3”类型的操作数 我的最后一次尝试绝对是错误的: Vector3 flag1 = new Vector3(33, 66, -255); Vector3 ori = player.Origin; if (ori = flag
Vector3 flag1 = new Vector3(33, 66, -255);
Vector3 ori = player.Origin;
if (ori = flag1) {
//do something
}
产生:
无法将类型“InfinityScript.Vector3”隐式转换为“bool”
正确的方法是什么?在比较两个变量的相等性时,需要使用==:
if (ori == flag1)
{//do something
}
如果仍然出现错误,则比较的值可能属于不同的类型。例如,变量ori是一个整数,变量值
flag1是另一种类型
下面解释了如何在不知道变量类型的情况下比较这两个值 在比较两个变量的相等性时,需要使用==:
if (ori == flag1)
{//do something
}
如果仍然出现错误,则比较的值可能属于不同的类型。例如,变量ori是一个整数,变量值
flag1是另一种类型
下面解释了如何在不知道变量类型的情况下比较这两个值 在if语句中使用“=”而不是“=”。在if语句中使用“=”而不是“=”。
=
是赋值
==
比较
所以你想要
如果(ori==flag1)
=
是赋值
==
比较
所以你想要
if(ori==flag1)
正如其他人所说,您希望==进行比较,而不是=(这是赋值)
我知道“它不起作用”,但这不是尝试其他东西的理由,而是为了了解发生了什么。你得到一个错误,说你不能比较一个类型和同一个类型我想不出有多少情况会发生这种情况,你可能使用一个过时的dll使用同一个类(这意味着它不能比较同一个类的两个版本)
您必须告诉我们更多关于您的项目是如何组织的(单个项目或多个程序集),并向我们提供Vector3的源代码,或者如果它是一个简单的项目且不敏感,请在此处发布解决方案。正如其他人所说,您希望==进行比较,而不是=(这是分配) 我知道“它不起作用”,但这不是尝试其他东西的理由,而是为了了解发生了什么。你得到一个错误,说你不能比较一个类型和同一个类型我想不出有多少情况会发生这种情况,你可能使用一个过时的dll使用同一个类(这意味着它不能比较同一个类的两个版本)
您必须告诉我们更多关于您的项目是如何组织的(单个项目或多个程序集),并向我们提供Vector3的源代码,或者如果它是一个简单的项目且不敏感,请在此处发布解决方案。InfinityScript.Vector3缺少一种比较向量的好方法。浮点比较并非完全不寻常,它相当麻烦。您可以使用:
if (ori.DistanceTo(flag) < 0.5f) {
// Close enough
//...
}
if(初始距离(标志)<0.5f){
//足够近
//...
}
< >修改<代码> 0F f >代码>以达到您认为“足够接近”的任何值。不要将其设为0。InfinityScript.Vector3缺少一种比较向量的好方法。浮点比较并非完全不寻常,它相当麻烦。您可以使用:
if (ori.DistanceTo(flag) < 0.5f) {
// Close enough
//...
}
if(初始距离(标志)<0.5f){
//足够近
//...
}
< >修改<代码> 0F f >代码>以达到您认为“足够接近”的任何值。不要将其设为0。
如果(ori==flag1)
,在C中,您使用==
来比较等式。我已经尝试使用“==”。然而,当我这样做的时候,它给了我这个错误。”运算符“==”不能应用于“InfinityScript.Vector3”和“InfinityScript.Vector3”类型的操作数它会产生什么错误?我编辑了第一篇文章。如果InfinityScript.Vector3
是一个结构
,并且没有定义运算符=
,则会出现此错误。如果(ori==flag1)
,在C#中,您使用=
来比较相等。我已经尝试使用“==”。然而,当我这样做的时候,它给了我这个错误。”运算符“==”不能应用于“InfinityScript.Vector3”和“InfinityScript.Vector3”类型的操作数它会产生什么错误?我编辑了第一篇文章。如果InfinityScript.Vector3
是一个结构,并且没有定义运算符=
,你得到了这个错误。你把C#
和JavaScript
混淆了吗?是的,我纠正了,我显然是在JavaScript模式下。你把C#
和JavaScript
混淆了吗?是的,我纠正了,我显然是在JavaScript模式下。我只是想说,我一直在使用==运算符,但是,我把代码弄乱了一点,忘了把它全部还原到原来的样子。@user3713606仅仅vector3的源代码是不够的,我们还需要解决方案本身(这样我们就可以看到您正在编译什么,它如何链接到vector3,它是否同时编译,在同一个解决方案的另一个项目中,在一个单独的预先构建的dll中,等等?)问题很可能是在项目级别,而不是代码级别。我只是想说,我一直在使用==运算符,但是,我对代码有点混乱,忘了把它全部恢复到原来的状态。@user3713606 vector3的源代码还不够,我们还需要解决方案本身(这样我们就可以看到你在编译什么,它是如何链接到vector 3的,它是在同一时间编译的,在同一个解决方案的另一个项目中,在一个单独的预先构建的dll中吗?)问题可能是在项目级别,而不是代码级别。我只是想问,我必须在数字的末尾加上f吗?@Hans Pass