私は理解していません。私のクラスを比較するのはなぜ偽を返すのですか?私は考えました.Equalsは、各要素がお互いにあるかどうかをチェックし、両方のクラスで私がそれぞれ私になるべきです。だから問題は何ですか?そして、これを真にするにはどうしたらいいですか?私の2つのクラスを比較してもfalseが返されるのはなぜですか?
public class MyTest
{
string me;
public MyTest(){}
public MyTest(string v) { me = v; }
public static implicit operator string(MyTest v){return v.me;}
public static implicit operator MyTest(string v) { return new MyTest(v); }
public override string ToString(){ return me;}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("{0}", new MyTest("a").Equals(new MyTest("a")));
Console.WriteLine("{0}", new MyTest("a") == new MyTest("a"));
//false, false
それは構造体は、デフォルトで毎のフィールド平等を行うことは事実ですが、その*それだけで*が本当に構造体不必要なものを作るための正当な理由はない... –
OPとしては、 Stringで暗黙の変換を実行していますが、これは不変です。このシナリオでは、構造体は良いcanidateになる可能性があります。 –