Click here to Skip to main content
15,889,808 members
Home / Discussions / C#
   

C#

 
AnswerRe: Issue around converting Expression<Func<T, bool>> to Expression<Func<U, bool>> Pin
Richard Deeming31-Mar-16 4:59
mveRichard Deeming31-Mar-16 4:59 
GeneralRe: Issue around converting Expression<Func<T, bool>> to Expression<Func<U, bool>> Pin
Sascha Lefèvre31-Mar-16 5:21
professionalSascha Lefèvre31-Mar-16 5:21 
GeneralRe: Issue around converting Expression<Func<T, bool>> to Expression<Func<U, bool>> Pin
Richard Deeming31-Mar-16 5:49
mveRichard Deeming31-Mar-16 5:49 
GeneralRe: Issue around converting Expression<Func<T, bool>> to Expression<Func<U, bool>> Pin
Sascha Lefèvre31-Mar-16 6:41
professionalSascha Lefèvre31-Mar-16 6:41 
QuestionUsing Deployment Item with Directory.GetFiles Pin
RamboSp31-Mar-16 2:17
RamboSp31-Mar-16 2:17 
AnswerRe: Using Deployment Item with Directory.GetFiles Pin
Eddy Vluggen1-Apr-16 1:33
professionalEddy Vluggen1-Apr-16 1:33 
Questioncurrent state of old issue of Enum boxing when used as Keys in a Dictionary ? Pin
BillWoodruff31-Mar-16 2:15
professionalBillWoodruff31-Mar-16 2:15 
AnswerRe: current state of old issue of Enum boxing when used as Keys in a Dictionary ? Pin
Richard Deeming31-Mar-16 2:52
mveRichard Deeming31-Mar-16 2:52 
Looking at the source of the EqualityComparer<T> class[^], there's special-case code to handle enums where the underlying type is Byte, SByte, Int16, UInt16, Int32, UInt32, Int64 or UInt64:
C#
if (t.IsEnum) {
    TypeCode underlyingTypeCode = Type.GetTypeCode(Enum.GetUnderlyingType(t));

    // Depending on the enum type, we need to special case the comparers so that we avoid boxing
    // Note: We have different comparers for Short and SByte because for those types we need to make sure we call GetHashCode on the actual underlying type as the 
    // implementation of GetHashCode is more complex than for the other types.
    switch (underlyingTypeCode) {
        case TypeCode.Int16: // short
            return (EqualityComparer<T>)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(ShortEnumEqualityComparer<short>), t);
        case TypeCode.SByte:
            return (EqualityComparer<T>)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(SByteEnumEqualityComparer<sbyte>), t);
        case TypeCode.Int32:
        case TypeCode.UInt32:
        case TypeCode.Byte:
        case TypeCode.UInt16: //ushort
            return (EqualityComparer<T>)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(EnumEqualityComparer<int>), t);
        case TypeCode.Int64:
        case TypeCode.UInt64:
            return (EqualityComparer<T>)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(LongEnumEqualityComparer<long>), t);
    }
}

The presence of the [Flags] attribute won't make any difference.

Obviously, this is the latest version of the BCL. I'm not sure how far back this was added.



"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer


QuestionMessage Removed Pin
31-Mar-16 0:25
PomegranateTiger31-Mar-16 0:25 
QuestionSync SQLite with Oracle or Postgre Pin
Potestas30-Mar-16 21:42
Potestas30-Mar-16 21:42 
AnswerRe: Sync SQLite with Oracle or Postgre Pin
Nathan Minier31-Mar-16 1:26
professionalNathan Minier31-Mar-16 1:26 
QuestionC# Tic Tac Toe "Simulator" Pin
Member 1242680830-Mar-16 11:24
Member 1242680830-Mar-16 11:24 
AnswerRe: C# Tic Tac Toe "Simulator" Pin
Sascha Lefèvre30-Mar-16 17:15
professionalSascha Lefèvre30-Mar-16 17:15 
AnswerRe: C# Tic Tac Toe "Simulator" Pin
Rob Philpott30-Mar-16 23:41
Rob Philpott30-Mar-16 23:41 
AnswerRe: C# Tic Tac Toe "Simulator" Pin
Patrice T31-Mar-16 0:55
mvePatrice T31-Mar-16 0:55 
RantREPOST Pin
Richard Deeming31-Mar-16 1:42
mveRichard Deeming31-Mar-16 1:42 
QuestionDynamically close DB2 CLP window using C# Pin
Tej_dev30-Mar-16 6:44
Tej_dev30-Mar-16 6:44 
AnswerMessage Closed Pin
30-Mar-16 7:19
mveGerry Schmitz30-Mar-16 7:19 
GeneralRe: Dynamically close DB2 CLP window using C# Pin
Tej_dev30-Mar-16 8:14
Tej_dev30-Mar-16 8:14 
SuggestionRe: Dynamically close DB2 CLP window using C# Pin
Richard Deeming30-Mar-16 8:44
mveRichard Deeming30-Mar-16 8:44 
GeneralMessage Closed Pin
30-Mar-16 8:52
mveGerry Schmitz30-Mar-16 8:52 
GeneralRe: Dynamically close DB2 CLP window using C# Pin
Richard Deeming30-Mar-16 8:54
mveRichard Deeming30-Mar-16 8:54 
AnswerRe: Dynamically close DB2 CLP window using C# Pin
Richard Deeming30-Mar-16 8:52
mveRichard Deeming30-Mar-16 8:52 
GeneralRe: Dynamically close DB2 CLP window using C# Pin
Tej_dev30-Mar-16 9:03
Tej_dev30-Mar-16 9:03 
QuestionBitmap to BitmapImage Conversion Not Working - WPF Pin
AmbiguousName30-Mar-16 4:36
AmbiguousName30-Mar-16 4:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.