Click here to Skip to main content
15,885,278 members
Home / Discussions / C#
   

C#

 
AnswerRe: Constraints taking either types in generics Pin
kapax511-Aug-10 3:52
kapax511-Aug-10 3:52 
GeneralRe: Constraints taking either types in generics Pin
dashingsidds11-Aug-10 4:00
dashingsidds11-Aug-10 4:00 
GeneralRe: Constraints taking either types in generics Pin
Luc Pattyn11-Aug-10 4:14
sitebuilderLuc Pattyn11-Aug-10 4:14 
GeneralRe: Constraints taking either types in generics Pin
kapax511-Aug-10 4:24
kapax511-Aug-10 4:24 
AnswerRe: Constraints taking either types in generics Pin
Łukasz Nowakowski11-Aug-10 4:00
Łukasz Nowakowski11-Aug-10 4:00 
AnswerRe: Constraints taking either types in generics Pin
Covean11-Aug-10 5:49
Covean11-Aug-10 5:49 
GeneralRe: Constraints taking either types in generics Pin
PIEBALDconsult11-Aug-10 16:45
mvePIEBALDconsult11-Aug-10 16:45 
GeneralRe: Constraints taking either types in generics Pin
Covean11-Aug-10 22:31
Covean11-Aug-10 22: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 16:37
mvePIEBALDconsult11-Aug-10 16:37 
Questionsql express installing when I call it from my program, but does not work!! Pin
lourensG11-Aug-10 3:04
lourensG11-Aug-10 3:04 
AnswerRe: sql express installing when I call it from my program, but does not work!! Pin
PIEBALDconsult11-Aug-10 3:07
mvePIEBALDconsult11-Aug-10 3:07 
GeneralRe: sql express installing when I call it from my program, but does not work!! [modified] Pin
lourensG11-Aug-10 3:15
lourensG11-Aug-10 3:15 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
Dave Kreskowiak11-Aug-10 5:56
mveDave Kreskowiak11-Aug-10 5:56 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
lourensG11-Aug-10 20:54
lourensG11-Aug-10 20:54 
GeneralRe: sql express installing when I call it from my program, but does not work!! Pin
Dave Kreskowiak12-Aug-10 2:11
mveDave Kreskowiak12-Aug-10 2:11 
Questionarray to array copy Pin
varsh1211-Aug-10 0:12
varsh1211-Aug-10 0:12 
AnswerRe: array to array copy Pin
Nuri Ismail11-Aug-10 0:24
Nuri Ismail11-Aug-10 0:24 
AnswerRe: array to array copy Pin
PIEBALDconsult11-Aug-10 3:08
mvePIEBALDconsult11-Aug-10 3:08 
QuestionMoving the multiple files from one to another location Pin
annie_bel10-Aug-10 23:33
annie_bel10-Aug-10 23:33 
AnswerRe: Moving the multiple files from one to another location Pin
Nuri Ismail10-Aug-10 23:48
Nuri Ismail10-Aug-10 23:48 
AnswerRe: Moving the multiple files from one to another location Pin
Islorvat11-Aug-10 0:51
Islorvat11-Aug-10 0:51 
GeneralRe: Moving the multiple files from one to another location [modified] Pin
annie_bel11-Aug-10 1:26
annie_bel11-Aug-10 1:26 
GeneralRe: Moving the multiple files from one to another location Pin
annie_bel11-Aug-10 1:56
annie_bel11-Aug-10 1:56 
AnswerRe: Moving the multiple files from one to another location Pin
Luc Pattyn11-Aug-10 1:39
sitebuilderLuc Pattyn11-Aug-10 1:39 
QuestionDesign-Time editor for Custom object stores value into *.resx with $ variable prefix Pin
Bouditch10-Aug-10 23:01
Bouditch10-Aug-10 23: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.