39
C# .NET Marc Chevaldonné [email protected] Année scolaire 2010 - 2011 1 lundi 13 septembre 2010

C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

Embed Size (px)

Citation preview

Page 1: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

C# .NET

Marc Chevaldonné[email protected]

Année scolaire 2010 - 2011

1

lundi 13 septembre 2010

Page 2: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Héritage : syntaxe, overload

• Héritage (proche C++)• syntaxe (cf. exemple 15)

• accesseur protected• constructeur : appel du ctor de la classe mère avec base• sealed : accesseur pour empêcher l’héritage ou l’overload

de méthodes• method or field overload : (cf. exemple 16)

• conseillé d’utiliser new pour montrer que c’est intentionnel...• ... mais plutôt déconseillé de surcharger les méthodes dans

les classes filles dans une API

2

lundi 13 septembre 2010

Page 3: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Héritage : initialiseurs et constructeurs

• Héritage (proche C++)• initialiseurs et constructeurs (cf. exemple 17) :

• initializers statiques de la classe fille• constructeur statique de la classe fille• initializers (instance) de la classe fille• initializers statiques de la classe mère• constructeur statique de la classe mère• initializers (instance) de la classe mère• constructeur (instance) de la classe mère• constructeur (instance) de la classe fille

3

lundi 13 septembre 2010

Page 4: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Héritage : casting

• Héritage (proche C++) • Casting (cf. exemple 18)

• Upcasting : implicite• Downcasting

• operator is• operator as

• plus sûr que le cast aveugle (C-like) + exception• plus rapide en exécution• => à préférer

4

lundi 13 septembre 2010

Page 5: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Héritage/Polymorphisme

• Héritage et Polymorphisme (proche C++)• virtual (cf. exemple 19)• new vs virtual vs override (cf. exemples 16 et 19)

• Classes abstraites (cf. exemple 20)

5

lundi 13 septembre 2010

Page 6: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Immutabilité et structures

• Immutabilité• différentes immutabilités

• la vraie : constante, la valeur ne change jamais• write-once immutability : la valeur est initialisée une seule fois, puis ne

change jamais• shallow vs deep immutability : shallow immutability veut dire que la

valeur est non mutable mais qu’elle contient des membres «de type référence» mutables (e.g. un tableau)

• immutable façades : semblent immutables de l’extérieur (ne peuvent pas être modifiées de l’extérieur) mais changent de l’intérieur

• avantages : • plus sûr (nécessite moins de vérifications)• thread safe : accessible en lecture par plusieurs threads simultanés• utilisables dans les tables de hâchage• ...

• conseil : écrivez vos structures write-once immutable

6

lundi 13 septembre 2010

Page 7: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Interfaces

• Interfaces (cf. exemple 23)• différences avec les classes (abstraites)

• préférez une classe et des sous-classes lorsqu’elles doivent partager une même implémentation => définition de types

• préférez une interface et des implémentations lorsque ces dernières sont indépendantes => définition de fonctionnalités

• améliorent l’encapsulation

interfaces classes

une classe peut implémenter plusieurs interfaces une classe ne peut dériver que d’une seule classe

tous les membres d’une interface sont abstraits une classe abstraite peut avoir des membres abstraits et des membres concrets

les structures peuvent implémenter des interfaces une structure ne peut pas hériter d’une classe

7

lundi 13 septembre 2010

Page 8: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Boxing Unboxing

• boxing unboxing• boxing : cast d’un type valeur vers un type référence

int x = 3;object obj = x;

• unboxing : cast d’un type référence vers un type valeurint y = (int) obj;

• lent => à éviter• interfaces et boxing

interface I { void Method(); }struct S : I { public void Method() {} }

• si on cast l’interface en struct => pas de boxingS s = new S(); /*pas de boxing*/ s.Method();

• si on cast une structure en une interface => boxingI i = s; /* boxing*/ i.Method();

8

lundi 13 septembre 2010

Page 9: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

C# avancéNullable Types

• Nullable types (cf. exemple 25)• permettent de représenter des valeurs null pour des types

«valeur»• Nullable<T> : structure légère et non mutable

• Value et HasValue• conversion de T vers T? implicite• conversion de T? vers T explicite

9

lundi 13 septembre 2010

Page 10: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

Fondamentaux de la plateforme .NETstring et StringBuilder

• string (cf. exemple 26)• séquence non mutable de caractères• construction• string vide ou null• chercher• manipuler• comparaison de string

• StringBuilder (cf. exemple 27)• mutable• plus rapide et plus efficace que le string

10

lundi 13 septembre 2010

Page 11: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

Fondamentaux de la plateforme .NETFormatting and Parsing / la Console

• Formatting and Parsing (cf. exemple 28)• Formatting = convertir en string (par défaut, ToString)• Parsing = convertir depuis un string (par défaut, Parse sur de

nombreux types)• ToString Parse TryParse• IFormatProvider

• Standard Numeric Format Strings• Custom Numeric Format Strings• Enumeration Format Strings

• la Console (cf. exemple 29)

11

lundi 13 septembre 2010

Page 12: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

Utilisation de Visual Studio 2010

• environnement de travail

• solutions, projets, explorateur de solutions

• explorateur de classes

• compilation et exécution

• debuggeur

12

lundi 13 septembre 2010

Page 13: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

Fondamentaux de la plateforme .NETDate Time Math

• TimeSpan (cf. exemple 30)• Standard TimeSpan Format Strings• Custom TimeSpan Format Strings

• Date Time (cf. exemple 30)• Standard Date and Time Format Strings• Custom Date and Time Format Strings

• Math• Min Max Abs Cos Exp...

• Random (cf. exemple 31)

13

lundi 13 septembre 2010

Page 14: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Generics

• 2 solutions pour écrire du code réutilisable à travers différents types : l’héritage et la généricité• héritage : réutilisablité à travers un type de base• généricité : réutilisabilité à travers un «patron»

• Généricité (cf. exemples 32 à 40)• introduction

• définition du problème (cf. exemple 32)• et pourquoi pas object ? (cf. exemple 33)

• syntaxe (cf. exemple 34)• default (cf. exemple 35)• contraintes : where -> base-class, interface, class, struct, new()

(cf. exemple 36 et 37)• héritage (cf. exemple 38)

14

lundi 13 septembre 2010

Page 15: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

création de types en C#Generics

• Généricité (cf. exemples 32 à 40)• covariance :

• soit C une classe qui hérite de B• un type X est dit covariant si X<C> peut être converti en

X<B>

• les classes NE SONT PAS covariantes (cf. exemple 39) • les interfaces SONT covariantes (cf. exemple 40)• les tableaux SONT covariants• les délégués sont covariants

• contravariance :• soit C une classe qui hérite de B• un type X est dit contravariant si X<B> peut être converti en

X<C> 15

lundi 13 septembre 2010

Page 16: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIntroduction

• ensemble standard de types pour stocker et gérer des collections d’objets

‣ listes de taille dynamique‣ listes chaînées‣ dictionnaires (triés ou non)‣ tableaux‣ ...

lundi 13 septembre 2010

Page 17: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIntroduction

• ensemble standard de types pour stocker et gérer des collections d’objets

‣ listes de taille dynamique‣ listes chaînées‣ dictionnaires (triés ou non)‣ tableaux‣ ...

• Qu’est-ce qu’on trouve dans les espaces de noms de Collections ? (System.Collections, System.Collections.Generic, System.Collections.Specialized, System.Collections.ObjectModel)

‣ des interfaces (définition de protocoles pour les collections)

‣ des classes de collections prêtes à l’emploi (lists, dictionaries, arrays ...)

‣ des classes de base pour écrire vos propres collections

lundi 13 septembre 2010

Page 18: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIntroduction

• ensemble standard de types pour stocker et gérer des collections d’objets

‣ listes de taille dynamique‣ listes chaînées‣ dictionnaires (triés ou non)‣ tableaux‣ ...

• Qu’est-ce qu’on trouve dans les espaces de noms de Collections ? (System.Collections, System.Collections.Generic, System.Collections.Specialized, System.Collections.ObjectModel)

‣ des interfaces (définition de protocoles pour les collections)

‣ des classes de collections prêtes à l’emploi (lists, dictionaries, arrays ...)

‣ des classes de base pour écrire vos propres collections

‣ égalités, hashcode, etc... => plus tard

on va en parler un peu

on va en parler beaucoup

pas le temps

lundi 13 septembre 2010

Page 19: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsUn tout petit peu d’histoire...

• Avant C# 2, les Generics n’existaient pas, les collections n’étaient pas génériques

• Avec C# 2 et l’arrivée de la généricité, les collections sont devenues génériques,

• mais les anciennes sont restées, et certains liens subsistent...

➡Nous parlerons surtout des collections génériques

lundi 13 septembre 2010

Page 20: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsInterfaces

IEnumerator IEnumerator<T>

IEnumerable IEnumerable<T>

ICollection ICollection<T>

IDictionary IList IList<T> IDictionary<TKey, TValue>

non génériques génériques

lundi 13 septembre 2010

Page 21: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsInterfaces

IEnumerator IEnumerator<T>

IEnumerable IEnumerable<T>

ICollection ICollection<T>

IDictionary IList IList<T> IDictionary<TKey, TValue>

non génériques génériques

pour traverserune collection

pour utiliser foreach

lundi 13 septembre 2010

Page 22: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsInterfaces

IEnumerator IEnumerator<T>

IEnumerable IEnumerable<T>

ICollection ICollection<T>

IDictionary IList IList<T> IDictionary<TKey, TValue>

non génériques génériques

permet de compter,d’ajouter, d’enlever (...) des éléments d’une collection

lundi 13 septembre 2010

Page 23: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsInterfaces

IEnumerator IEnumerator<T>

IEnumerable IEnumerable<T>

ICollection ICollection<T>

IDictionary IList IList<T> IDictionary<TKey, TValue>

non génériques génériques

permet d’accéder aux éléments par indice (tableau)

lundi 13 septembre 2010

Page 24: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsInterfaces

IEnumerator IEnumerator<T>

IEnumerable IEnumerable<T>

ICollection ICollection<T>

IDictionary IList IList<T> IDictionary<TKey, TValue>

non génériques génériques stocke des paires clé/valeurtables de hachage, etc...

lundi 13 septembre 2010

Page 25: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIEnumerable<T> et IEnumerator<T>

public interface IEnumerator{ bool MoveNext(); object Current { get; } void Reset();}

public interface IEnumerator<T> : IEnumerator, IDisposable{ T Current { get; }}

public interface IEnumerable{ IEnumerator GetEnumerator();}

public interface IEnumerable<T> : IEnumerable{ IEnumerator<T> GetEnumerator();}

• Comment utiliser une collection qui hérite de IEnumerable<T> ?‣ avec un foreach

‣ en récupérant un énumérateur et en utilisant MoveNext et Current

‣ cf exemple 41

lundi 13 septembre 2010

Page 26: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIEnumerable<T> et IEnumerator<T>

public interface IEnumerator{ bool MoveNext(); object Current { get; } void Reset();}

public interface IEnumerator<T> : IEnumerator, IDisposable{ T Current { get; }}

public interface IEnumerable{ IEnumerator GetEnumerator();}

public interface IEnumerable<T> : IEnumerable{ IEnumerator<T> GetEnumerator();}

• Pourquoi dériver de IEnumerable<T> ?‣ pour pouvoir utiliser foreach ...

‣ ... sur sa propre collection non standard

‣ pour faire une énumération plus complexe

‣ cf exemples 42 et 43

lundi 13 septembre 2010

Page 27: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsICollection<T>

public interface ICollection<T> : IEnumerable<T>, IEnumerable{ int Count (); void Add (T item); bool Remove (T item); void Clear (); bool Contains (T item); void CopyTo (T[] array, int arrayIndex); bool IsReadOnly { get; }}

comptage

insertion à la fin (append)nettoyage

qqs recherches simples

lundi 13 septembre 2010

Page 28: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsIList<T>

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable{ T this [int index] { get; set; }

int IndexOf (T item);

void Insert (int index, T item); void RemoveAt (int index);}

indexeur

insertion à une place précise

qqs recherches simples

lundi 13 septembre 2010

Page 29: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

lundi 13 septembre 2010

Page 30: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• hérite de IList<T>, IList et ICloneable

• permet de :‣ construire,‣ indexer,‣ enumérer,‣ trier,‣ inverser les éléments,‣ copier les éléments‣ ...

• cf. exemples 3 et 44

lundi 13 septembre 2010

Page 31: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• FIFO : First In First Out

• permet de :‣ rajouter des éléments dans la file (Enqueue),‣ retirer l’élément suivant de la file (Dequeue),‣ connaître l’élément suivant de la file sans le retirer (Peek)‣ compter le nombre d’éléments de la file

• cf. exemple 45

lundi 13 septembre 2010

Page 32: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• LIFO : Last In First Out

• permet de :‣ rajouter un élément au-dessus de la pile (Push),‣ retirer l’élément en haut de la pile (Pop),‣ connaître l’élément en haut de la pile sans le retirer (Peek)‣ compter le nombre d’éléments de la file

• cf. exemple 46

lundi 13 septembre 2010

Page 33: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• Liste doublement chaînée

• ne possède pas d’indexeur

• mais l’insertion est rapide (sauf s’il faut chercher où l’insérer)

• cf. exemple 47

lundi 13 septembre 2010

Page 34: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• Champ de bits

lundi 13 septembre 2010

Page 35: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• même idée que la table de hachage sans la valeur...

lundi 13 septembre 2010

Page 36: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsLes classes de base implémentant ICollection<T> et IList<T>

• Array

• List<T>

• Queue<T>

• Stack<T>

• LinkedList<T>

• BitArray

• HashSet<T>

• La classe de base la plus utilisée

• rapide pour des insertions en fin de liste• rapide en BinarySearch pour des listes triées• lent pour des insertions• cf. exemple 48

lundi 13 septembre 2010

Page 37: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsList<T>

public class List<T> : IList<T>{ public List (); public List (IEnumerable<T> collection); public List (int capacity); public void Add (T item); public void AddRange (IEnumerable<T> collection); public void Insert (int index, T item); public void InsertRange (int index, IEnumerable<T> collection);

public bool Remove (T item); public void RemoveAt (int index); public void RemoveRange (int index, int count); public int RemoveAll (Predicate<T> match);

public T this [int index] { get; set; } public List<T> GetRange (int index, int count); public Enumerator<T> GetEnumerator();

...}

construction

insertions

enlever des éléments

indexer

lundi 13 septembre 2010

Page 38: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsList<T>

public class List<T> : IList<T>{ ...

public T[] ToArray(); public void CopyTo (T[] array); (+2 autres) public ReadOnlyCollection<T> AsReadOnly(); public List<TOutput> ConvertAll (Converter <T, TOutput> converter);

public void Reverse(); public int Capacity { get; set; } public void TrimExcess(); public void Clear(); + recherches, tris comme dans Array, mais en méthodes d’instances}

export et copie

autres

lundi 13 septembre 2010

Page 39: C# - marc.chevaldonne.free.frmarc.chevaldonne.free.fr/ens_rech/Csharp_XML_GI_2010_2011_files/... · C# .NET Marc Chevaldonn ... Utilisation de Visual Studio 2010 •environnement

CollectionsReadOnlyCollection<T>

• Permet de n’avoir accès à une collection qu’en lecture

• Attention aux types références !

• cf. exemple 49

lundi 13 septembre 2010