Question 1 sur 20
public class Animal
{
public virtual void MakeSound() { Console.WriteLine("Animal"); }
}
public class Dog : Animal {
public override void MakeSound() { Console.WriteLine("Dog"); }
}
Animal myAnimal = new Dog();
myAnimal.MakeSound();
1. Quelle est la sortie du code suivant ?
- A. Animal
- B. Dog
- C. Aucun résultat
- D. Une erreur de compilation
Le mot-clé virtual
permet à la méthode de la classe de base d'être remplacée dans les classes dérivées. Ici, la méthode MakeSound()
est remplacée dans la classe Dog
, donc la sortie est Dog
.
Question 2 sur 20
2. Quelle est la sortie du code suivant ?
public class Person
{
public string Name { get; set; } } public class Employee : Person { public int Id { get; set; } }
Employee emp = new Employee { Name = "John", Id = 123 }; Console.WriteLine(emp.Name);
- A. John
- B. 123
- C. Employee
- D. null
La propriété Name
est héritée de la classe de base Person
, donc elle est accessible et retourne la valeur "John"
.
Question 3 sur 20
3. Quelle est la sortie du code suivant ?
public class Base
{ public int Value = 5; } public class Derived : Base { public int Value = 10; }
Base obj = new Derived(); Console.WriteLine(obj.Value);
- A. 5
- B. 10
- C. Une erreur de compilation
- D. Aucun résultat
Les membres de la classe dérivée cachent les membres de la classe de base. Ici, Value
dans Derived
cache Value
dans Base
, mais obj
est de type Base
, donc Value
est celui de Base
.
Question 4 sur 20
4. Quelle est la sortie du code suivant ?
public class Test
{ public static void Method(int x) { Console.WriteLine(x); } public static void Method(string x) { Console.WriteLine(x); }
}
Test.Method(10); Test.Method("Hello");
- A. 10 puis Hello
- B. Hello puis 10
- C. Une erreur de compilation
- D. Aucun résultat
Le code utilise la surcharge de méthode pour appeler Method()
avec un int
et une string
.
Question 5 sur 20
5. Quelle est la sortie du code suivant ?
public class Example
{
public void Print(params int[] numbers) { foreach (var number in numbers) Console.Write(number + " "); }
}
Example example = new Example(); example.Print(1, 2, 3);
- A. 1 2 3
- B. 1
- C. 1 2
- D. Une erreur de compilation
Le mot-clé params
permet à une méthode d'accepter un nombre variable d'arguments.
Question 6 sur 20
6. Quelle est la sortie du code suivant ?
public class Data
{
public int Value { get; set; } }
Data data1 = new Data { Value = 100 }; Data data2 = data1; data2.Value = 200; Console.WriteLine(data1.Value);
- A. 200
- B. 100
- C. Une erreur de compilation
- D. Aucun résultat
Les objets sont passés par référence, donc les modifications apportées à data2
affectent également data1
.
Question 7 sur 20
7. Quelle est la sortie du code suivant ?
public class Parent { public virtual void Display() { Console.WriteLine("Parent"); } } public class Child : Parent { public override void Display() { Console.WriteLine("Child"); } }
Parent p = new Parent(); Parent c = new Child(); p.Display(); c.Display();
- A. Parent puis Child
- B. Child puis Parent
- C. Parent puis Parent
- D. Child puis Child
La méthode Display()
est appelée en fonction du type de l'objet référencé, donc p
appelle la méthode de Parent
et c
appelle celle de Child
.
Question 8 sur 20
8. Quelle est la sortie du code suivant ?
public class Test { public static void Show(T item) { Console.WriteLine(item); } } Test.Show(5); Test.Show("Hello");
- A. 5 puis Hello
- B. Hello puis 5
- C. Une erreur de compilation
- D. Aucun résultat
La méthode générique affiche les éléments en fonction de leur type spécifié.
Question 9 sur 20
9. Quelle est la sortie du code suivant ?
public class Calculator { public int Add(int a, int b) { return a + b; } public double Add(double a, double b) { return a + b; } } Calculator calc = new Calculator(); Console.WriteLine(calc.Add(5, 10)); Console.WriteLine(calc.Add(5.5, 10.5));
- A. 15 puis 16
- B. 15 puis 16.0
- C. 15.0 puis 16.0
- D. 15 puis 16.5
Les méthodes surchargées sont appelées en fonction des types des arguments passés.
Question 10 sur 20
10. Quelle est la sortie du code suivant ?
public class Base { public int Value = 5; } public class Derived : Base { public new int Value = 10; } Base obj = new Derived(); Console.WriteLine(obj.Value);
- A. 5
- B. 10
- C. Une erreur de compilation
- D. Aucun résultat
Le mot-clé new
cache le membre de la classe de base mais ne le remplace pas. Ici, obj
est de type Base
, donc il accède à la valeur 5
.
Question 11 sur 20
11. Quelle est la sortie du code suivant ?
public class Person { public string Name { get; set; } } public class Employee : Person { public new string Name { get; set; } } Employee emp = new Employee { Name = "John" }; Console.WriteLine(emp.Name);
- A. John
- B. null
- C. Une erreur de compilation
- D. Aucun résultat
La propriété Name
dans Employee
cache celle de la classe de base mais est accessible à travers le type Employee
.
Question 12 sur 20
12. Quelle est la sortie du code suivant ?
public class Base { public virtual void Print() { Console.WriteLine("Base"); } } public class Derived : Base { public override void Print() { Console.WriteLine("Derived"); } } Base obj = new Base(); obj.Print(); obj = new Derived(); obj.Print();
- A. Base puis Derived
- B. Derived puis Base
- C. Base puis Base
- D. Derived puis Derived
La méthode Print()
est remplacée dans la classe dérivée. Ici, le type d'objet détermine la méthode qui est appelée.
Question 13 sur 20
13. Quelle est la sortie du code suivant ?
public class Program {
public static void Main() { object obj = "Hello"; string str = (string)obj; Console.WriteLine(str); }
- A. Hello
- B. Une erreur d'exécution
- C. Une erreur de compilation
- D. Aucun résultat
La conversion de type object
à string
est valide et renvoie la chaîne Hello
.
Question 14 sur 20
14. Quelle est la sortie du code suivant ?
public class Test {
public static void Display(string s = "Default") { Console.WriteLine(s); }
}
Test.Display("Custom"); Test.Display();
- A. Custom puis Default
- B. Default puis Custom
- C. Custom puis Custom
- D. Default puis Default
Les paramètres avec une valeur par défaut sont utilisés si aucun argument n'est fourni.
Question 15 sur 20
15. Quelle est la sortie du code suivant ?
public class Test {
public static void Method(T item) where T : class { Console.WriteLine(item.GetType().Name); }
}
Test.Method(new Test());
- A. Test
- B. Class
- C. Object
- D. Une erreur de compilation
Le nom du type de l'objet est affiché.
Question 16 sur 20
16. Quelle est la sortie du code suivant ?
public class Example {
public int this[int index] { get { return index; } set { Console.WriteLine("Index set to " + value); } }
}
Example example = new Example(); example[5] = 10; Console.WriteLine(example[5]);
- A. Index set to 10 puis 5
- B. Index set to 10 puis Index set to 5
- C. 10 puis 5
- D. Une erreur de compilation
Les indexeurs permettent de définir des comportements personnalisés lors de l'accès aux éléments via des crochets.
Question 17 sur 20
17. Quelle est la sortie du code suivant ?
public class Test
{ public static void Display(T[] array) { foreach (T item in array) Console.Write(item + " "); }
}
Test.Display(new int[] { 1, 2, 3 }); Test.Display(new string[] { "A", "B" });
- A. 1 2 3 puis A B
- B. A B puis 1 2 3
- C. 1 2 3 A B
- D. Aucun résultat
Les tableaux d'entiers et de chaînes sont traités correctement grâce aux génériques.
Question 18 sur 20
18. Quelle est la sortie du code suivant ?
public class Test {
public static void Print(T item) where T : struct { Console.WriteLine(item); } }
Test.Print(10); Test.Print(3.14);
- A. 10 puis 3.14
- B. 10 puis une erreur
- C. Une erreur de compilation
- D. 10 puis 10
Les types de valeur sont les types structurés et peuvent être utilisés avec les contraintes génériques.
Question 19 sur 20
19. Quelle est la sortie du code suivant ?
public class Test {
public static void Print(T item) { Console.WriteLine(item?.ToString()); } }
Test.Print(null); Test.Print("Hello");
- A. null puis Hello
- B. null puis une erreur
- C. Une erreur de compilation
- D. null puis null
Le ?.
opérateur vérifie si l'objet est nul avant d'appeler ToString()
.
Question 20 sur 20
20. Quelle est la sortie du code suivant ?
public class Test
{ public static void Print(T[] array) { foreach (var item in array) Console.Write(item + " "); } }
Test.Print(new List { 1, 2, 3 }.ToArray());
- A. 1 2 3
- B. 1 2 3 1 2 3
- C. 1 2
- D. Aucun résultat
Les listes peuvent être converties en tableaux pour être traitées par les méthodes génériques.
Pas encore de commentaires.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.