


Introduction détaillée à la différence entre out et ref en C# (image et texte)
Cet article présente principalement les connaissances pertinentes sur out et ref. Il a une certaine valeur de référence, examinons-le avec l'éditeur ci-dessous
Pour bien comprendre C#out et ref, vous devez d'abord clarifier les deux concepts suivants (Si vous maîtrisez bien les types de valeur et les types de référence, vous pouvez sauter "1. Clarifier deux concepts de base")
1. Clarifier deux concepts de base
Type de valeur :
Définition : Passé par valeur, c'est-à-dire que les paramètres réels sont passés aux paramètres formels (les termes paramètres formels et paramètres réels ne sont pas définis ici ) . Méthode de stockage : Principalement dans la pile. Essence : implémenté via le transfert de valeur, le formulaire de copiecopy et les méthodes Pop() et Push() de la pile d'appels.
Types courants : int, float, bool, enum, struct, Array, etc. Exemple de type de valeur ://主函数 static void Main(string[] args) { //定义两个实参n1和n2,并初始化 int n1 = 10, n2 = 20; Console.WriteLine("交换前n1和n2的值"); Console.WriteLine("n1={0},n2={1}", n1, n2);//n1=10,n2=20 Swap(n1,n2); Console.WriteLine("交换后n1和n2的值"); Console.WriteLine("n1={0},n2={1}",n1,n2);//n1=10,n2=20 Console.Read(); } /// <summary> /// 交换两个变量的值 /// </summary> /// <param name="n1">形参n1</param> /// <param name="n2">形参n2</param> static private void Swap(int t1,int t2) { int temp; temp =t1; t1 =t2; t2 = temp; }Analyse : Le code ci-dessus, par transfert de valeur, ne modifie pas les valeurs de n1 et n2 après l'échange de deux variables. le transfert de valeur est En copiant le formulaire, la valeur originale n'est pas modifiée. L'image est la suivante : 1)
Définissez les variables n1 et n2, et initialisez les variables La représentation en mémoire est à peu près la suivante (int n1 = 10, n2 = 20 ;)
CodeType de référence :
Définition : transmis par adresse, comme un pointeur dans c++. En termes simples, considérez simplement l’adresse comme la clé de la porte. Méthode de stockage : principalement stocké dans le tas. Essence : transmis par adresse, variables partagées, un changement, tous les changements. Types courants : Chaîne,Objet, etc.
code:c++// Cpplus.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" //主函数 int _tmain(int argc, _TCHAR* argv[]) { void Swap(int *x, int *y); int n1 = 10, n2 = 20; printf("交换前n1和n2的值\n"); printf("%d,%d\n", n1, n2); Swap(&n1,&n2); printf("交换后n1和n2的值\n"); printf("%d,%d",n1,n2); getchar(); return 0; } //交换函数 void Swap(int *x, int *y) { int temp = *x; *x = *y; *y = temp; }résultat:
2 Pourquoi out et ref sont introduits
Cela peut être. Comme le montre l'analyse ci-dessus, le transfert de valeur ne peut pas modifier la valeur d'une variable. Que dois-je faire si je souhaite modifier la valeur d'une variable comme C++ ?c# introduit et ref pour résoudre ce problème. Par conséquent, out et ref sont des types de référence.
2. Explication détaillée de out
En une phrase : out ne peut qu'entrer mais pas sortir.//主函数 static void Main(string[] args) { int n1, n2; Console.WriteLine(GetSum(out n1,out n2)); Console.Read(); } //out参数 static public int GetSum(out int numberFirst,out int numberSecond) { numberFirst = 10; numberSecond = 3; return numberFirst + numberSecond; }résultat :
fonctionnalités :
1. La définition de la méthode et l'appel de la méthode doivent utiliser le mot-clé out. (Le code ci-dessus est évidemment facile à voir) 2. out ne sort que mais pas in, c'est-à-dire qu'il a pour fonction d'effacer les paramètres externes de la méthode. (Dans le code ci-dessus, les lecteurs peuvent modifier arbitrairement les valeurs de n1 et n2. Tant que le corps de la méthode GetSum() n'est pas modifié, la valeur de sortie est 13) 3. taper. (Si vous l'appelez directement sans définir n1 et n2 à l'avance, la compilation ne passera pas) 4 Pour les fonctions du même nom, out n'existe pas avec ref en même temps, et peut être <.>surchargé//如下两个方法可以重载 public void getNumer(int num){} public void setTime(out int num){num=10;} //如下两个方法不能重载 public void getNumer(ref int num){num=10;} public void setTime(out int num){num=10;}3. Explication détaillée de la réf
En une phrase : il y a une entrée et il y a une sortie.
//主函数 static void Main(string[] args) { int n1=1, n2=3; Console.WriteLine(refGetSum(ref n1,ref n2)); Console.Read(); } //ref参数 static public int refGetSum(ref int numberFirst, ref int numberSecond) { numberFirst = 10; numberSecond = 3; return numberFirst + numberSecond; }
ref特点:
1、方法定义和调用方法都必须显示使用ref关键字。(如上代码显然易见)
2、ref有进有出,即可以把值传入方法体内。(如上代码,读者可以任意改变n1和n2的值)
3、为引用类型。(直接调用而不事先定义n1和n2,编译不通过)
4、同名函数,out不与ref同时存在,可以重载。
四、out与ref异同
主要区别,out只输出yuan'chuang,ref有进有出。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Version Mac de WebStorm
Outils de développement JavaScript utiles

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

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

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