Test sur le langage C#

Opérateurs : Les opérateurs +, > et == sont surchargeables.

Quelles sont les valeurs par défaut des modificateurs pour les classes, méthodes
et champs : "ex / namespace NS{ class A{void m(){};int n;} }"

  1. classe : public, methode : public, champ : private
  2. classe : public, methode : private, champ : private
  3. classe : internal, methode : private, champ : private
  4. classe : internal, methode : internal, champ : internal

Que signifie "internal" ? Portée limitée...

  1. au fichier
  2. au namespace
  3. à l'assembly
  4. à la classe

Tableaux - soit une classe A ainsi

class A {
public A() { n = 1; }
private int n = 1;
public override string ToString() { return n.ToString(); }}

dans le Main on code :

A[] tab = new A[10];
for (int i=0; i<tab.Length; i++)
Console.Write(tab[i].ToString());

La sortie est :

  1. pas de sortie, erreur de compilation
  2. une exception en runtime
  3. 1111111111
  4. sortie vide

Comparaison - soit...

string s1 = "abc";
string s2 = "abc";

que valent :

s1==s2
s1.Equals(s2)

  1. true, true
  2. true, false
  3. false, true
  4. false, false

Comparaison - soit…

object o1 = new object()
object o2 = new object()

que valent :

o1==o2
o1.Equals(o2)

  1. false, false
  2. false, true
  3. true, false
  4. true, true

Que peut on déclarer dans une interface ?
- méthode d'instance
- méthode de classe (static)
- propriété
- champ non static

  1. méthode d'instance, méthode de classe, propriété
  2. méthode d'instance, propriété
  3. méthode d'instance, propriété, champ non static
  4. méthode d'instance, champ non static

Héritage - Dans une sous classe quel mot clé permet de référencer
la super classe (par exemple pour appeler son constructeur) :

  1. this
  2. base
  3. super
  4. :

Différence entre les mots clés const et readonly - choisissez la bonne réponse :

  1. Pas de différence
  2. Un champ readonly peut être modifié dans le constructeur
  3. Un champ const peut être modifié dans le constructeur
  4. Un champ readonly est forcément déclaré static

Polymorphisme - si une méthode en redéfinit une autre :

Quel mot clef doit avoir la déclaration dans la sous-classe ?
a - aucun mot clef requis
b - virtual
c - static
d - override
e - new

Quel mot clef doit avoir la déclaration dans la super-classe ?
a - aucun mot clef requis
b - virtual
c - static
d - override
e - new

  1. a et b
  2. b et a
  3. d et b
  4. b et d

Exception - les ApplicationException sont des exceptions :

  1. Unchecked (aussi appelées non vérifiées)
  2. Checked

Donner les types qui passent par défaut par valeur :

- struct
- int
- string
- object
- int[]
- enum

  1. struct, int
  2. struct, int, enum
  3. struct, int, int[]

new - l'emploi de new implique une allocation sur le tas.

using - using possède deux significations différentes.

Une méthode Main peut se déclarer : static int Main().

Libération mémoire - nous pouvons créer des destructeurs en C# ainsi :

  1. public ~A()
  2. public void Finalize();
  3. public override void Finalize();

Avec .Net le code qui s'exécute est géré par :

  1. la JVM
  2. le SDK
  3. le GC
  4. la CLR

Si l'on ne fournit pas de constructeur, le compilateur en génère un lui même.

L'utilisation d'un delegate implique celle d'un event.

Utilisation de if. Soit le code :
int n = 1;
if (n) produit

  1. une erreur de compilation
  2. une exception en runtime
  3. un résultat vrai
  4. un résultat faux

Conversion :
short s = 0;
s = s+ 1; …

  1. est correct
  2. est incorrect

Condition
int a=1;
int b=2;
après le test suivant if ((a-- == 0) && (--b == 0))

  1. a=0 et b=1
  2. a=1 et b=1
  3. a=0 et b=2
  4. a=1 et b=2

Héritage - dites tout ce qui est vrai :
a - une classe peut hériter d'une autre classe
b - une classe peut hériter de plus d'une autre classe
c - une classe peut implémenter une interface
d - une classe peut implémenter plus d'une interface
e - une interface peut hériter d'une autre interface
f - une interface peut implémenter une classe

  1. a, b, c, d
  2. a, c, d
  3. a, c, d, e
  4. a, c, e, f

Collections - dites tout ce qui est vrai :
Dans ma collection ArrayList...

a - je peux mettre un string
b - je peux mettre un int
c - je peux mettre un autre ArrayList

  1. a
  2. a, c
  3. b
  4. a, b, c

Générics - Une interface peut être générique.

ex : interface Iqqch <T> { … }