मैं इस c ++ कोड को 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;
}
};
सी # में बीसीएस मुझे सूचित करें कि मैं ऑपरेटर == ओवरलोडिंग में त्रुटि के अलावा संरचना के भीतर सरणी नहीं बना सकता हूं, इसलिए, यह कैसे होगा #?
उत्तर:
जवाब के लिए 0 № 1C # में ऑपरेटरों को सार्वजनिक स्थैतिक होने की आवश्यकता है। साथ ही == ऑपरेटर को तुलना करने में सक्षम होने के लिए तर्क के रूप में दो वस्तुओं की आवश्यकता होती है, और एक = ऑपरेटर को परिभाषित किया जाना है, तो a = = ऑपरेटर को भी परिभाषित करने की आवश्यकता होती है।
इसे इस्तेमाल करे:
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);
}
}