Intento convertir este código c ++ a c #:
struct gene
{
int alleles[4];
int fitness;
float likelihood;
// Test for equality.
int operator==(gene gn)
{
for (int i=0;i<4;i++)
{
if (gn.alleles[i] != alleles[i]) return false;
}
return true;
}
};
bcs en C # me informa que no puedo crear una matriz dentro de la estructura además del error en la sobrecarga del operador ==, entonces, ¿cómo estará en c #?
Respuestas
0 para la respuesta № 1Los operadores en C # deben ser públicos estáticos. Además, el operador == necesita dos objetos como argumento para poder comparar, y también se debe definir un operador! = Si se debe definir un operador ==.
Prueba esto:
public struct Gene
{
int[] alleles;
int fitness;
float likelihood;
public Gene(int[] alleles) : this()
{
this.alleles = alleles;
}
// Test for equality.
public static bool operator ==(Gene gn1, Gene gn2)
{
for (int i=0; i < gn1.alleles.Length ;i++)
{
if (gn1.alleles[i] != gn2.alleles[i]) return false;
}
return true;
}
public static bool operator !=(Gene gn1, Gene gn2)
{
return !(gn1 == gn2);
}
}