我想設置一個屬性,它是使用一個整數值的枚舉,像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(等於4)分配給該對象的屬性。
當enum是一個影響鑄造&賦值的類的屬性時有什麼不同,或者只是對Graphics.SmoothingMode有些奇怪,或者是什麼?
好吧,所以大家都指出,大多數SmoothingMode枚舉值在功能上是等價的。然而,沒有解釋爲什麼它不能保持足夠的獨立性並允許價值分配保持原樣。因此,_my_理論認爲,這種看似強制的等價是在'Grahpics'屬性的'get'方法中實現的...... – 2011-06-17 19:58:21