を失敗した私はINT:キャストが正常に動作し、割り当てが
Graphics g = this.CreateGraphics();
int enumValue = 2; // corresponds to SmoothingMode.HighQuality
g.SmoothingMode = (SmoothingMode)2; // does not have expected result
// also tried:
SmoothingMode sm = (SmoothingMode)Enum.ToObject(typeof(SmoothingMode), enumValue); // works correctly
g.SmoothingMode = sm; // still doesn't work!
のように、整数値を列挙使用している。しかし、オブジェクトのプロパティが正しい列挙値に設定されることは決してありませんプロパティを設定しようとしています。私はこれをVS2010のデバッガで実行し、Enum.ToObjectのキャストや使用は正しく動作しますが、割り当て後にg.SmoothingMode
はAntiAliasの代わりにHighQualityです。実際、どのような数のキャストであっても、代入は常に、オブジェクトのプロパティに割り当てられるAntiAlias(int相当3)またはNone(int equivalent 4)のいずれかになります。
enumが、キャスト&の割り当てに影響を与えるクラスのプロパティであるか、Graphics.SmoothingModeについて何か奇妙なもの、または何かについて異なることがありますか?
OK、誰もがほとんどのSmoothingMode列挙値が機能的に同等であることを指摘しています。しかし、なぜそれが単なる十分に残っておらず、現状のままで価値を割り当てることができないのかについての説明はありません。だから、_my_理論は、この一見強制的に等価が 'Grahpics'プロパティの' get'メソッドの内部で実装されているということです。 –