


C# Learning Diary 30 --- Classes génériques, méthodes génériques, délégués génériques
Les génériques vous permettent de différer l'écriture de la spécification du type de données d'un élément de programmation au sein d'une classe ou d'une méthode jusqu'à ce qu'il soit réellement utilisé dans votre programme. En d'autres termes, lors de la déclaration d'une classe ou d'une méthode, parce que nous ne savons pas quel type de paramètres l'utilisateur souhaite transmettre, nous « creusons un trou (« <T> ») » où le type est transmis. utilisez-le, nous le remplissons avec des types de données spécifiques.
Classe générique :
Sur la base des connaissances que nous avons apprises précédemment, nous définissons une classe :
class Data { public int n_data; }
A ce moment, le type de données de n_data a été déterminé comme étant de type int, donc lors de l'attribution d'une valeur, elle ne peut être que de type int si elle est réécrite comme la classe générique suivante :
class Data<T> { public T n_data; }
. Pour le moment, le type de données de n_data n'est pas encore sûr, donc lorsque vous lui attribuez une valeur, vous devez spécifier T, qui est le type de n_data, qui doit combler les lacunes,
Data<int> data = new Data<int>(); //指定T为int Data<string> data = new Data<string>(); //指定T为stringBien sûr, dans l'exemple ci-dessus, T ne peut pas être spécifié. Si vous souhaitez que le type de n_data soit un tableau, l'exemple suivant peut être satisfait : .
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { class Data<T> //泛型类 { public T[] n_data; //泛型变量 public Data(int size) //构造方法,new的时候调用构造方法开辟空间 { n_data = new T[size]; } //输入 public void setdata(int index,T value) { n_data[index] = value; } //输出 public T getdata(int x) { return n_data[x]; } } class Program { static void Main(string[] args) { Data<int> data = new Data<int>(5); data.n_data[2] = 2; Console.WriteLine(data.n_data[2]); } } }Le résultat est : 2Méthode générique : C'est ce que nous prenons comme exemple la méthode d'échange swap, la fonction swap en C s'écrit comme ceci :
#include <iostream> using namespace std; template <typename T> void swap1(T &a,T &b) //也可以看作泛型 { T temp; temp = a; a = b; b = temp; } int main() { int a=0,b=1; swap1(a,b); cout<<a<<"\t"<<b<<endl; return 0; }Résultat : 1 0
Si a et b sont des types de caractères, les fonctions ci-dessus sont également applicables. CLa méthode #swap est la suivante :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { class data {//swap方法,ref是按地址传递 public static void swap<T>(ref T a, ref T b) { T temp; temp = a; a = b; b = temp; } static void Main(string[] args) { string a = "HC"; string b = "666"; swap(ref a,ref b); Console.WriteLine(a+"\t"+b); //结果 666 HC } } }Résultat : 666 HC Ceci est très similaire à C++ Délégué générique : Délégué là sont également des génériques, en suivant l'exemple ci-dessus :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { public delegate void MyDelegate<T>();//泛型委托 class Data<T> { private T a; private T b; public void setvalue(T x, T y) { a = x; b = y; } //swap方法,ref是按地址传递 public void swap() { T temp; temp = a; a = b; b = temp; } public void printvalue() { Console.WriteLine(a + "\t" + b); } } class program { static void Main(string[] args) { Data<string> data = new Data<string>(); data.setvalue("HC","666"); MyDelegate<string> my = new MyDelegate<string>(data.swap); my += data.printvalue; my(); //结果 666 HC } } }
Résultat :

La relation entre C # et .NET est inséparable, mais ce ne sont pas la même chose. C # est un langage de programmation, tandis que .NET est une plate-forme de développement. C # est utilisé pour écrire du code, compiler dans le langage intermédiaire de .NET (IL) et exécuté par .NET Runtime (CLR).

C # .NET est toujours important car il fournit des outils et des bibliothèques puissants qui prennent en charge le développement d'applications multiples. 1) C # combine .NET Framework pour rendre le développement efficace et pratique. 2) Le mécanisme de collecte de la sécurité et des ordures de C # améliore ses avantages. 3) .NET fournit un environnement de course multiplateforme et des API riches, améliorant la flexibilité du développement.

C # .NETtisversatileforbothwebandDeskTopDevelopment.1) forweb, useasp.netfordynamicapplications.2) fordesktop, employwindowsformSorwpfforrichInterfaces.3) usexamarinforcross-plateformDevelopment, permanant les codéescosswindows, macos, linux, etmobiledevices.

C # et .NET s'adaptent aux besoins des technologies émergentes à travers des mises à jour et des optimisations continues. 1) C # 9.0 et .NET5 introduire le type d'enregistrement et l'optimisation des performances. 2) .netcore améliore le support natif et conteneurisé cloud. 3) ASP.Netcore s'intègre aux technologies Web modernes. 4) ML.NET prend en charge l'apprentissage automatique et l'intelligence artificielle. 5) La programmation asynchrone et les meilleures pratiques améliorent les performances.

C # .NeTissuitableFormenterprise-LevelApplications withithemicrosofosystématetoitsstrongThpyping, RichLibrary, androbustperformance.wowever, itmayNotBeidealForcross-PlatformDevelopmentorwhenRawpeediscritical, whileLanguageSlikerUstorGomightBeferable.

Le processus de programmation de C # dans .NET comprend les étapes suivantes: 1) l'écriture de code C #, 2) la compilation dans un langage intermédiaire (IL) et 3) l'exécution par .NET Runtime (CLR). Les avantages de C # dans .NET sont sa syntaxe moderne, son système de type puissant et son intégration serrée avec le Framework .NET, adapté à divers scénarios de développement des applications de bureau aux services Web.

C # est un langage de programmation moderne et orienté objet développé par Microsoft et dans le cadre du .NET Framework. 1.C # prend en charge la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme. 2. La programmation asynchrone en C # est implémentée via Async et attend des mots clés pour améliorer la réactivité des applications. 3. Utilisez LINQ pour traiter les collections de données concisement. 4. Les erreurs courantes incluent les exceptions de référence NULL et les exceptions indexes hors gamme. Les compétences de débogage comprennent l'utilisation d'un débogueur et une gestion des exceptions. 5. L'optimisation des performances comprend l'utilisation de StringBuilder et d'éviter l'emballage et le déballage inutiles.

Les stratégies de test pour les applications C # .NET comprennent les tests unitaires, les tests d'intégration et les tests de bout en bout. 1. Le test unitaire garantit que l'unité minimale du code fonctionne indépendamment, en utilisant le cadre MSTEST, NUnit ou Xunit. 2. Les tests intégrés vérifient les fonctions de plusieurs unités combinées et des données simulées couramment utilisées et des services externes. 3. Les tests de bout en bout simulent le processus de fonctionnement complet de l'utilisateur et le sélénium est généralement utilisé pour les tests automatisés.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft