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

C#

 
AnswerRe: Constraints taking either types in generics Pin
kapax511-Aug-10 4:52
kapax511-Aug-10 4:52 
GeneralRe: Constraints taking either types in generics Pin
dashingsidds11-Aug-10 5:00
dashingsidds11-Aug-10 5:00 
GeneralRe: Constraints taking either types in generics Pin
Luc Pattyn11-Aug-10 5:14
sitebuilderLuc Pattyn11-Aug-10 5:14 
GeneralRe: Constraints taking either types in generics Pin
kapax511-Aug-10 5:24
kapax511-Aug-10 5:24 
AnswerRe: Constraints taking either types in generics Pin
Łukasz Nowakowski11-Aug-10 5:00
Łukasz Nowakowski11-Aug-10 5:00 
AnswerRe: Constraints taking either types in generics Pin
Covean11-Aug-10 6:49
Covean11-Aug-10 6:49 
GeneralRe: Constraints taking either types in generics Pin
PIEBALDconsult11-Aug-10 17:45
professionalPIEBALDconsult11-Aug-10 17:45 
GeneralRe: Constraints taking either types in generics Pin
Covean11-Aug-10 23:31
Covean11-Aug-10 23:31 
What do you mean is a very bad idea, to have this 'OR' constraint?

I don't think so. Take a look at this example:
Lets say you want to add an extention to the values types short, int, long.

public static class ValueTypeExtention
{
    // A
    public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : IConvertible
    {
        return signedValue.ToUInt64();
    }

    // B
    public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : struct { ... }

    // C
    public static ulong ToUnsignedLongUnchecked(this short signedValue) { return signedValue.ToUInt64(); }
    public static ulong ToUnsignedLongUnchecked(this int signedValue) { return signedValue.ToUInt64(); }
    public static ulong ToUnsignedLongUnchecked(this long signedValue) { return signedValue.ToUInt64(); }

    // D
    public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : short | int | long
    {
        return unchecked((ulong)signedValue);
    }

    // E
    public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : (short | int | long) as IConvertible
    {
        return signedValue.ToUInt64();
    }
}


A, B and C are versions how you could solve this problem nowadays.
But lets have a deeper look:
- A allows bool bValue=false; ulong ulVal = bValue.ToUnsignedLongUnchecked();. It allows it for
every class/struct that implements IConvertible.
- B needs type checking and offers ToUnsignedLongUnchecked() to every struct even BITMAPINFO.
- C is the only way to solve the condition completely but needs multiple implementations.
Using where T : struct, IConvertible as constraints is the best way to solve this problem with generics so far.

The 'pseudo' constraint D just allows T to be one of this 3 value types. And I think E could be the best way.
Greetings
Covean

AnswerRe: Constraints taking either types in generics Pin
PIEBALDconsult11-Aug-10 17:37
professionalPIEBALDconsult11-Aug-10 17:37 
Questionsql express installing when I call it from my program, but does not work!! Pin
lourensG11-Aug-10 4:04
lourensG11-Aug-10 4:04 
AnswerRe: sql express installing when I call it from my program, but does not work!! Pin
PIEBALDconsult11-Aug-10 4:07
professionalPIEBALDconsult11-Aug-10 4:07 
GeneralRe: sql express installing when I call it from my program, but does not work!! [modified] Pin
lourensG11-Aug-10 4:15
lourensG11-Aug-10 4:15 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
Dave Kreskowiak11-Aug-10 6:56
mveDave Kreskowiak11-Aug-10 6:56 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
lourensG11-Aug-10 21:54
lourensG11-Aug-10 21:54 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
Dave Kreskowiak12-Aug-10 3:11
mveDave Kreskowiak12-Aug-10 3:11 
Questionarray to array copy Pin
varsh1211-Aug-10 1:12
varsh1211-Aug-10 1:12 
AnswerRe: array to array copy Pin
Nuri Ismail11-Aug-10 1:24
Nuri Ismail11-Aug-10 1:24 
AnswerRe: array to array copy Pin
PIEBALDconsult11-Aug-10 4:08
professionalPIEBALDconsult11-Aug-10 4:08 
QuestionMoving the multiple files from one to another location Pin
annie_bel11-Aug-10 0:33
annie_bel11-Aug-10 0:33 
AnswerRe: Moving the multiple files from one to another location Pin
Nuri Ismail11-Aug-10 0:48
Nuri Ismail11-Aug-10 0:48 
AnswerRe: Moving the multiple files from one to another location Pin
Islorvat11-Aug-10 1:51
Islorvat11-Aug-10 1:51 
GeneralRe: Moving the multiple files from one to another location [modified] Pin
annie_bel11-Aug-10 2:26
annie_bel11-Aug-10 2:26 
GeneralRe: Moving the multiple files from one to another location Pin
annie_bel11-Aug-10 2:56
annie_bel11-Aug-10 2:56 
AnswerRe: Moving the multiple files from one to another location Pin
Luc Pattyn11-Aug-10 2:39
sitebuilderLuc Pattyn11-Aug-10 2:39 
QuestionDesign-Time editor for Custom object stores value into *.resx with $ variable prefix Pin
Bouditch11-Aug-10 0:01
Bouditch11-Aug-10 0:01 

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.