3

私はいくつかの非常に古い VB.Net コードを持っています:

 Private Function Min(ByVal A As Object, ByVal B As Object) As Object
            If A Is DBNull.Value Or B Is DBNull.Value Then Return DBNull.Value
            If A < B Then Return A Else Return B
        End Function

心配ない。コンパイラはそれを食べます....そしてもっと要求します。ただし、C# に変換する場合:

    private object Min(object A, object B)
    {
        if (object.ReferenceEquals(A, DBNull.Value) | object.ReferenceEquals(B, DBNull.Value))
            return DBNull.Value;
        return A < B ? A : B;
    }

コンパイラはエラーメッセージでそれをチョークします:

Cannot apply operator '<' with operands of object and object

それで、なんてディリーよ?

4

5 に答える 5

2

このページでは、< 演算子がどのように動作するか (ケースのように 2 つのオブジェクトに適用された場合を含む) について説明します。

http://msdn.microsoft.com/en-us/library/cey92b0t(v=vs.80).aspx (「関係比較演算子を使用した型のないプログラミング」セクションを参照)。

Konrad Rudolph が示唆したように、それを C# に変換する最良の方法は IComparable を使用することですが、この演算子をオブジェクト (VB はそれをコンパイルしますが、上記のリンクで述べたように例外をスローします)。

于 2013-06-06T12:55:50.210 に答える
0

はい、オブジェクトで比較演算子を使用することはできません。文字列をパラメータとして渡すようにしてください。

于 2013-06-06T12:41:26.350 に答える
0

vbでは、明示的なオフと厳密なオフがある場合、コンパイラは多くのものを食べます。私の知る限り、C#ではそのようなことはありません。

于 2013-06-06T12:39:08.353 に答える