-7

私は単純なカスタム リスト クラスを持っていてIComparable、それを実装しようとしていますが、正直言ってうまくいきません。MSDN や他のブログを試してみましたが、それでも同じです。

public class sortDateTime : IComparable
{
    protected DateTime m_startDate, m_endDate;

    public DateTime startDate
    {
        get { return m_startDate; }
        set { m_startDate = startDate; }
    }

    public DateTime endDate
    {
        get { return m_endDate; }
        set { m_endDate = endDate; }
    }

    public int CompareTo(object obj)
    {
        if(obj is sortDateTime)
            sortDateTime sDT = (sortDateTime) obj; //here ERROR

         return m_stDate.CompareTo(sDT.m_stDate);
    }
}

この例に従いましたが、エラーが発生しました:

埋め込みステートメントを宣言またはラベル付きステートメントにすることはできません

4

4 に答える 4

0

次のようにしてください:

if(obj is sortDateTime) {
     sortDateTime sDT = (sortDateTime) obj; //here ERROR
}

そしてそれはなくなります。

コンパイラがこのように動作する 理由のより具体的な説明については、以下を参照してください:なぜこのコンパイル エラーが発生するのか

標準の命名規則にC#従います。大文字以外で始まる型に名前を付けないでください。変更してくださいsortDateTime->SortDateTime

于 2013-04-11T10:42:11.273 に答える
0

これを試して:

public int CompareTo(object obj)
{
    sortDateTime sDT = null;
    if(obj is sortDateTime)
        sDT = (sortDateTime) obj; //here ERROR

    if(sDT != null)
    {
        return m_stDate.CompareTo(sDT.m_stDate);
    }
    else
    {
        throw new ArgumentException("object is not a sortDateTime type.");
    }
}
于 2013-04-11T10:51:32.573 に答える