Spørgsmål til MCTS70-536 bogen kapitel 1 Case Scenario - omkring en generic metode.
I Case Scenario 1, på side 64.
Er der følgende spørgsmål: "One of the tasks your application will perform is generating mailing labels for groups of subscribers or doctors. Is there any way that you can write a single method that will handle addresses for both subscribers and doctors? How will you immplement this?"
Svaret i Answers sektionen er: "Yes, you can use generics to create a method that can accept both subscribers and doctors. To access the information in the base class that both classes share, you need to make the base class a constraint for the generic method."
Mit spørgsmål er så følgende, jeg er udemærket godt klar over at man skal undgå boxing/unboxing pga det unødvendige overhead, men jeg gættede nemlig forkert på denne opgave.
Mit svar var dette: private static void PrintInfoCast(Person _p) { Console.WriteLine(_p.Name); }
Og den rigtige løsning må være noget lig dette: private static void PrintInfoGeneric<T>(T _t) where T : Person { Console.WriteLine(_t.Name); }
Er der en der kan forklare mig hvorfor en generisk metode er det rigtige svar i dette sammenhæng?
Men er den bog du omtaler "the selfstudy material for the '536' exam" ??
Den bog sucks big time.
Der er flere som sidder med den bog som poster spørgsmål om de såkaldte "rigtige svar" til microsoft.public.dotnet.languages.csharp og der er almindelig enighed om at spørgsmålene er uforståelige og svarene er forkerte.
Var også det jeg lidt frygtede at bogen var mangelfuld, kunne nemlig ikke se forskellen, kan godt regne ud at man har en klar fordel ved ikke at skulle lave boxing til object typen, men dette er jo ikke tilfældet..
Undrede mig bare over det da opgaven jo er meget klart beskrevet..
Men ja, hvis det ikke har nogen fordel det ene frem for det andet, så...
Tak for svaret Arne_v det var lige det jeg frygtede at bogen var mangelfuld.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.