0

このようなクラスを作成するにはどうすればよいですか。

public class Foo
{
    private string m_value;
    public string Value { get { return m_value; } set { m_value = value; } }
    public Foo()
    {
        m_value = "";
    }
}

文字列のプロパティにアクセスする必要なしに文字列と直接比較.Valueできるので、次のことができます。

Foo m_foo = new Foo();
m_foo = "someString";

if(m_foo == "someString")
{
    Console.Writeline("It Worked!");
}

これが可能かどうかはわかりません。

4

1 に答える 1

1

==演算子をオーバーロードできます(コンパイラーでは、「!=」、「Equals」、および「GetHashCode」もオーバーロードする必要があります)

public class Foo
{
  private string m_value;
  public string Value { get { return m_value; } set { m_value = value; } }
  public Foo()
  {
    m_value = "";
  }

  public override bool Equals(object obj)
  {
    return this.Value == obj.ToString();
  }

  public override int GetHashCode()
  {
    return Value.GetHashCode();
  }

  public static bool operator ==(Foo a, string b)
  {
    return a.Value == b;
  }

  public static bool operator !=(Foo a, string b)
  {
    return a.Value != b;
  }
}

あなたがただ書くことができるとき、私はその努力のすべてがそれの価値があるかどうかはわかりませんが:

if(m_foo.Value == "someString")
于 2013-01-14T19:39:36.283 に答える