6

css 値を表す独自のタイプを作成しています (ピクセルなど 12px など)。加算/減算/乗算/... 私の型と int をできるようにするために、int との間で 2 つの暗黙の演算子を定義しました。1つのことを除いて、すべてがうまく機能します..私が書いた場合:

CssUnitBase c1 = 10;
Console.WriteLine(c1);

「10px」ではなく「10」を取得します - ToString() メソッドの代わりに int への暗黙的な変換が使用されます。どうすればそれを防ぐことができますか?

4

3 に答える 3

14

はい、 への暗黙的な変換がintあり、 のオーバーロードWriteLine(int)は よりも具体的でWriteLine(object)あるため、それを使用します。

オーバーロードを明示的に呼び出すことができます。WriteLine(object)

Console.WriteLine((object)c1);

... またはToString、自分自身を呼び出すことができるため、次のようにConsole.WriteLine(string)呼ばれます。

Console.WriteLine(c1.ToString());

...または、への暗黙的な変換を削除することもできますint。それはあなたにとってどれほど役に立ちますか?私は通常、この種の暗黙的な変換を支持していません...(本当にしたい場合は、もちろん暗黙的な変換を維持できます。) int

于 2010-06-23T10:01:11.747 に答える
1

「ToString()」メソッドをオーバーライドして、c1.ToString() を使用します。

于 2010-06-23T09:58:58.927 に答える
1

ToStringメソッドをオーバーライドしCssUnitBaseて、文字列として必要なときに呼び出すだけです。

于 2010-06-23T10:01:24.557 に答える