我對擴展有點新。在發帖之前,我環顧四周尋找現有答案,因爲我討厭寫作,但我沒有看到任何我覺得有幫助的東西。擴展方法來修改枚舉值
我想要一個帶有Flag屬性的enum的擴展方法,我可以調用基本上將另一個枚舉/標誌附加到調用枚舉。
有人downvotes到這個Int32.MinValue之前,我沒有看起來相當數量,但我發現了一堆的「IsFlagSo和-SoSet」的問題和處理的標誌,而不是簡單的加一隻旗。
我所定義的枚舉爲以下:
[Flags]
internal enum eDiskFormat
{
None = 0x00,
_3D = 0x01,
Blu_ray_3D = 0x02,
Blu_ray = 0x04,
DigitalCopy = 0x08,
Dvd = 0x10
}
延伸被定義爲:
internal static void AddFormat(this Movie.eDiskFormat target, Movie.eDiskFormat newFormat)
{
target |= newFormat;
}
當我人稱其爲下文中,我期望得到的枚舉爲Movie.eDiskFormat .Blu_ray ...(它已初始化爲eDiskFormat.None)。
m.DiskFormat.AddFormat(Movie.eDiskFormat.Blu_ray);
取而代之,結果值仍然是eDiskFormat.None。我認爲「this」這個變量的傳遞是類似於通過引用傳遞的,但我顯然是不正確的。該方法內的價值正如我所想,但結果......呃,我想我已經說過了;因此這個問題。
請不要用 「C#枚舉」 和這樣的前綴您的圖書。這就是標籤的用途。 –
看看這裏:http://www.codeproject.com/Articles/37921/Enums-Flags-and-C-Oh-my-bad-pun那裏有一些很好的擴展。 –
@ChrisSinclair謝謝,那是一篇很好的文章。 – pennyrave