0% ont trouvé ce document utile (0 vote)
971 vues9 pages

Test

Le document aborde divers concepts de programmation en C#, incluant la surcharge des opérateurs, les modificateurs d'accès, les tableaux, les comparaisons d'objets, les interfaces, l'héritage, le polymorphisme, et la gestion des exceptions. Il explique également les différences entre les mots clés comme 'const' et 'readonly', ainsi que les implications de l'utilisation de 'new' et 'using'. Enfin, il traite des collections, des génériques et des règles de conversion et de condition dans le langage.

Transféré par

Badr Fathallah
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
971 vues9 pages

Test

Le document aborde divers concepts de programmation en C#, incluant la surcharge des opérateurs, les modificateurs d'accès, les tableaux, les comparaisons d'objets, les interfaces, l'héritage, le polymorphisme, et la gestion des exceptions. Il explique également les différences entre les mots clés comme 'const' et 'readonly', ainsi que les implications de l'utilisation de 'new' et 'using'. Enfin, il traite des collections, des génériques et des règles de conversion et de condition dans le langage.

Transféré par

Badr Fathallah
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

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

Oui
Seuls certains opérateurs ne le sont pas (= ou new par exemple)

Non

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;} }"

classe : public, methode : public, champ : private

classe : public, methode : private, champ : private

classe : internal, methode : private, champ : private


internal : qui signifie, portée limitée à l'assembly

classe : internal, methode : internal, champ : internal

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

au fichier

au namespace

à l'assembly

à la classe

Tableaux - soit une classe A ainsi

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

dans le Main on code :


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

La sortie est :

pas de sortie, erreur de compilation

une exception en runtime


Une exception en runtime car nous nous adressons aux éléments du tableau et ils sont tous
initialisés à .

1111111111

sortie vide

Comparaison - soit...

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

que valent :

s1==s2
[Link](s2)

true, true
En vertu de l'optimisation de l'allocation des chaines, s1 et s2 sont vraiment le même objet (et
ont donc les mêmes références)

true, false

false, true

false, false

Comparaison - soit…

object o1 = new object()


object o2 = new object()

que valent :
o1==o2
[Link](o2)

false, false
contrairement au cas précédent (string), deux <new> signifient deux objets différents, et donc
deux références différentes

false, true

true, false

true, true

Que peut on déclarer dans une interface ?

- méthode d'instance
- méthode de classe (static)
- propriété
- champ non static

méthode d'instance, méthode de classe, propriété

méthode d'instance, propriété


Aucune implémentation, ni membre de classe.

méthode d'instance, propriété, champ non static

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) :

this

base

super

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

Un champ readonly peut être modifié dans le constructeur


On déclarera souvent static readonly les champs constants d'une classe

Un champ const peut être modifié dans le constructeur

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

a et b

b et a

d et b
Virtual est nécessaire pour la méthode à redéfinir. Override est nécessaire pour la méthode qui
redéfinit.

b et d

Exception - les ApplicationException sont des exceptions :

Unchecked (aussi appelées non vérifiées)


Toutes les exceptions sont Unchecked en .Net donc les blocs try/catch ne sont pas
obligatoires.

Checked

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

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

struct, int

struct, int, enum


struct, int et enum sont des objets dérivé de ValueType int[] est un objet dérivé de
[Link] (ReferenceType)

struct, int, int[]

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

VRAI

FAUX
(alloc de struct par new =>pile)

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

VRAI
(import de namespace et utilisation de ressource IDisposable)

FAUX

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


VRAI
void ou int comme type de retour et string[] ou rien comme paramètre

FAUX

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

public ~A()

public void Finalize();

public override void Finalize();

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

la JVM

le SDK

le GC

la CLR
... ou Common Language Runtime.

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

VRAI
"c'est un constructeur public sans argument on l'appelle le constructeur par défaut"

FAUX

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

VRAI

FAUX
event simplifie l'utilisation du delegate mais n'est en rien obligatoire
Utilisation de if. Soit le code :
int n = 1;
if (n) produit

une erreur de compilation


Seul un type booléen est toléré dans le if.

une exception en runtime

un résultat vrai

un résultat faux

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

est correct

est incorrect
(pas de cast implicite int => short)

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

a=0 et b=1

a=1 et b=1

a=0 et b=2
(par la règle du court circuit)

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

a, b, c, d

a, c, d

a, c, d, e
Héritage simple et implémentation multiple.

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

a, c

a, b, c
Les int sont aussi des objets en C# (boxing).

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

ex : interface Iqqch <T> { … }

VRAI
La classe qui l'implémente peut être ou non générique

FAUX

Vous aimerez peut-être aussi