You are creating an application that manages information about zoo animals. The application includes a class
named Animal and a method named Save. The Save() method must be strongly typed. It must allow only
types inherited from the Animal class that uses a constructor that accepts no parameters. You need to
implement the Save() method. Which code segment should you use?
A.
public static void Save<T>(T target) where T : new(), Animal
{
…
}
B.
public static void Save<T>(T target) where T : Animal
{
…
}
C.
public static void Save<T>(T target) where T : Animal, new()
{
…
}
D.
public static void Save(Animal target)
{
…
}
Explanation:
When you define a generic class, you can apply restrictions to the kinds of types that client code can use for
type arguments when it instantiates your class. If client code tries to instantiate your class by using a type that is
not allowed by a constraint, the result is a compile-time error. These restrictions are called constraints.
Constraints are specified by using the where contextual keyword. http://msdn.microsoft.com/en-us/library/
d5x73970.aspx