1

ショートとして定義された列挙型がありますが、要素の 1 つをパラメーターとして渡すと、コンピューターは列挙型が既にショートであることを受け入れることを拒否し、それを再キャストします。私の質問はなぜですか?

つまり、列挙型設定: short {val1,val2,val3};

public void function (short param) 
{
    // ...
}

function(settings.val1); // will not compile

function((short)settings.val1); // will parse.
4

4 に答える 4

1

このコンテキストで:は、は継承演算子ではありません。代わりに、バッキングデータ型を定義するだけです。相続のように見えるのは残念です。

于 2012-05-24T03:15:32.910 に答える
1

メソッド呼び出しを次のように変更しますpublic void function (settings param) { }

于 2012-05-24T03:14:57.800 に答える
1

settings.val1 は短くない設定タイプであり、暗黙的なキャストをサポートしていないためです。Enum : short は、そのフィールドが short 型のメモリ領域に格納されていることを示しています。Enum アイテムのデフォルトの型は Int32 です

于 2012-05-24T02:47:54.353 に答える
1

という名前の列挙型がありsettingsます。その列挙型のバッキング タイプはたまたまshortですが、コンパイラに関する限り、タイプはまだsettingsです。

settingsには への暗黙的なキャストがないため、short明示的なキャストが必要です。

于 2012-05-24T02:53:49.420 に答える