18 EYLÜL 2008, PERŞEMBE
En yaygın# ına C çeteleler işlemleri
Beni hayat için, ayarlamak, silmek, ya da bir bit bir bit geçiş test etmek için nasıl bilmiyorum. Ya da emin değilim ya da ben nadiren de olsa lazım çünkü onları karıştırmak. "Bit-hile-sayfası" olması iyi olurdu. bir çok
Örneğin:
flags = flags | FlagsEnum.Bit4; // Set bit 4.
ya
if ((flags & FlagsEnum.Bit4)) == FlagsEnum.Bit4) // Is there a less verbose way?
Tüm diğer ortak operasyonlar, tercihen C örnekleri# sözdizimi [Bayraklar] bir numaralandırma kullanarak verebilir misiniz?
CEVAP
6 Ocak 2009, Salı
Bu uzantılar üzerinde biraz daha çalışmak You can find the code here yaptım
Sistem genişleten uzatma yöntemleri yazdım.Sık kullandığım numaralama... kurşun geçirmez olduğunu iddia ediyor değilim, ama yardımcı oldular...Yorum kaldırıldı...
namespace Enum.Extensions {
public static class EnumerationExtensions {
public static bool Has<T>(this System.Enum type, T value) {
try {
return (((int)(object)type & (int)(object)value) == (int)(object)value);
}
catch {
return false;
}
}
public static bool Is<T>(this System.Enum type, T value) {
try {
return (int)(object)type == (int)(object)value;
}
catch {
return false;
}
}
public static T Add<T>(this System.Enum type, T value) {
try {
return (T)(object)(((int)(object)type | (int)(object)value));
}
catch(Exception ex) {
throw new ArgumentException(
string.Format(
"Could not append value from enumerated type '{0}'.",
typeof(T).Name
), ex);
}
}
public static T Remove<T>(this System.Enum type, T value) {
try {
return (T)(object)(((int)(object)type & ~(int)(object)value));
}
catch (Exception ex) {
throw new ArgumentException(
string.Format(
"Could not remove value from enumerated type '{0}'.",
typeof(T).Name
), ex);
}
}
}
}
Daha sonra aşağıdaki gibi kullanılır
SomeType value = SomeType.Grapes;
bool isGrapes = value.Is(SomeType.Grapes); //true
bool hasGrapes = value.Has(SomeType.Grapes); //true
value = value.Add(SomeType.Oranges);
value = value.Add(SomeType.Apples);
value = value.Remove(SomeType.Grapes);
bool hasOranges = value.Has(SomeType.Oranges); //true
bool isApples = value.Is(SomeType.Apples); //false
bool hasGrapes = value.Has(SomeType.Grapes); //false
Bunu Paylaş:
Veritabanında yolları çeteleler kurtar...
C#: GPU, CPU (Pi Hesaplamak)ilgili İşl...
Java çeteleler adlandırma: Tekil veya ...
C uzanan çeteleler ?...
Nasıl g/Ç işlemleri eşzamanlı uyumsuz ...