/ / सरणी और ऑपरेटर एक संरचना के भीतर ओवरलोडिंग, सी ++ से सी # करने के लिए? [बंद] - सी #, सरणियाँ, दृश्य-सी ++, संरचना, ऑपरेटर-ओवरलोडिंग

एक स्ट्रक्चर के भीतर सरणी और ऑपरेटर ओवरलोडिंग, सी ++ से सी # तक? [बंद] - सी #, सरणी, दृश्य-सी ++, संरचना, ऑपरेटर-अधिभार

मैं इस 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 № 1

C # में ऑपरेटरों को सार्वजनिक स्थैतिक होने की आवश्यकता है। साथ ही == ऑपरेटर को तुलना करने में सक्षम होने के लिए तर्क के रूप में दो वस्तुओं की आवश्यकता होती है, और एक = ऑपरेटर को परिभाषित किया जाना है, तो 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);
}
}