La position actuelle:Accueil du site>C #: in, out, ref Keywords
C #: in, out, ref Keywords
2022-07-23 13:51:47【QQ 42987967】
Un.、inMots clés
in Les mots clés font passer les paramètres par référence,Mais assurez - vous que les paramètres ne sont pas modifiés. Il fait du paramètre un alias pour l'argument,Il doit s'agir d'une variable.DeC++D'un point de vue,inLes mots clés ressemblent un peu àconst T&
1.inModifier le type de valeur
1)QuandinLors de la modification du type de données de base,Nous ne pouvons pas modifier la valeur du type de données de base,Lire seulement.
void SetValue(in int i)
{
i = 4;//Erreur signalée
}2) Lors de la modificationstructLe type de données ne peut être lu que lorsque.
public struct ValueType
{
public int i;
public void Set()
{
i = 1;
}
}
public class ReadOnlyTest : MonoBehaviour
{
ValueType valueType = new ValueType();
void Seti2(in ValueType valtype)
{
valtype.i = 4;//Erreur signalée
}
}
2.inModifier le type de référence
Le type de référence est plus flexible , Il est possible de modifier la valeur d'une variable membre d'un type de référence .
public class RefType
{
public int i = 0;
}
public class ReadOnlyTest : MonoBehaviour
{
RefType refType = new RefType();
void Seti1(RefType reftype)
{
reftype.i = 4;//Peut être modifié normalement
}
}3.Utiliser dans la fonctionin Les mots - clés peuvent être considérés comme surchargés .
void SetValue(in int i)
{
Debug.Log(i);
}
void SetValue(int i)
{
Debug.Log(i);
}
void Start()
{
SetValue(i);
SetValue(in i);
}Cette section fait référence à :in Modificateur de paramètre - C# RÉFÉRENCES | Microsoft Docs
2.、outMots clés
outLes mots clés suiventinC'est très similaire., C'est comme un couple .Mais ouiout Les mots - clés ne sont pas seulement lisibles , Et peut être assigné ,En même tempsDoit être assigné.
void SetValue(out int i)
{
i = 9;
int k=i;
}
void Start()
{
int i = 0;
SetValue(out i);
Debug.Log(i);//Sera imprimé9
}Trois、refMots clés
1.Conseils officiels
1) Dans certains cas, L'accès aux valeurs par référence évite les opérations de réplication potentiellement coûteuses ,Pour améliorer les performances.
2) Ne confondez pas le concept transmis par référence avec le concept de type de référence . Les deux concepts sont différents . Que le paramètre de méthode soit un type de valeur ou un type de référence , Disponible à partir de ref Modifier. Lorsqu'il est transmis par référence , Le type de valeur n'est pas encadré .
2.refModifier le type de valeur
ref Le principal effet sur le type de valeur est , Sa forme de fonction modificatrice participe inEtoutIl n'y a pas de grande différence.
Mais ce qui est intéressant, c'est qu'il peut modifier directement les variables . C'est comme C++ La valeur de gauche est exactement la même .
void Start()
{
int i = 0;
ref int k = ref i;
k = 3;
Debug.Log(i);//i=3
}Et peut - être avec readonlyMots clés utilisés ensemble
void Start()
{
int i = 0;
ref readonly int k = ref i;
k = 3;//Seulement lisible,Non assignable,Erreur signalée
Debug.Log(i);
}3.ref、in、outLa différence entre les mots clés
1)Passer à ref Ou in Les arguments d'un paramètre doivent être initialisés,Avant de pouvoir passer. Cette exigence est liée à out Différents paramètres formels, Avant de passer , Il n'est pas nécessaire d'initialiser explicitement les arguments pour ce paramètre .
Cette section fait référence à :ref Mots clés - C# RÉFÉRENCES | Microsoft Docs
Mentions de copyright
Auteur de cet article [QQ 42987967],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207230718560705.html
Recommandé par sidebar
- Approfondir la file d'attente des conteneurs
- Méthode de rappel d'initialisation pour Bean et méthode de rappel pour libérer les ressources
- Enregistrer les données crawler dans la base de données MySQL
- Distribution des données via SQL
- Comment renouveler automatiquement les serrures distribuées redis (solution classique)
- Hongke Dynamics | cippe2022 est sur le point de se tenir, l'inscription est en cours
- Classe interne anonyme de kotlin (objet: XXXX)
- Interview raid: 6 grandes différences entre truncate, delete et Drop
- Ubuntu installe docker et les commandes de base de docker installent MySQL
- Leetcode - - Stack and queue articles
Devinez que vous aimez
Déploiement du cluster etcd
Dix problèmes dans la famille de protocoles TCP / IP
【 stm32 learning】 (21) stm32 Implementing Stepper Motor
Dessiner le tableau [grafana] avec les variables des critères de requête
Reconnaître les interfaces
LabVIEW: créer un VI
Cadre de développement de l'interface devextreme Gantt Control - Exporter PDF, trier les tâches
Exportation et importation de bases de données et de tableaux de données en ligne de commande MySQL
Easyeeagle, une plate - forme intelligente d'exploitation et de maintenance avec plusieurs plateformes de base de données massives
Vous souvenez - vous de offsetwidth, clientwidth, width, scrollwidth, clientx, screenx, offsetx, pagex dans JS?
Recommandé au hasard
- 【 Azure Event center】 Azure Event hub New Function attempt - GEO Disaster Recovery
- Quels sont les facteurs qui influent sur la prestation continue?
- 【 Tutoriel de démarrage rapide 7】 utilisation et introduction de l'ordinateur hôte de la station au sol de l'UAV en formation de coquille folle · Open Source
- Détails de la configuration redis
- Docker installe MySQL, redis
- Le circuit de limitation d'amplitude et le circuit de serrage utilisent la conductivité unidirectionnelle de la diode
- [carte des connaissances] cql et py2neo notes d'apprentissage
- C apprentissage des langues
- Application combinée de la ligne de transfert de colonne et de l'ensemble de données dans le scénario d'affaires
- Configuration SSL MySQL 5.6 / 5.7
- [apprentissage profond] fonction de perte (erreur absolue moyenne, erreur carrée moyenne, perte de lissage, entropie croisée, entropie croisée pondérée, perte de dé, focalloss)
- Optimisation de précision * stratégie d'optimisation 1: Réseau + optimiseur Sam
- Détails du Protocole Axi
- JS - - date Object & Ternary expression
- Leetcode - 494. Objectifs et
- L'interface utilisateur 3D ou le modèle dans l'unit é fait toujours face à la caméra et tourne avec l'angle de vue de la caméra 丨 l'angle de vue suit 丨 l'angle de vue fixe
- Discussion préliminaire sur JVM
- Déploiement de l'environnement appium pour les tests mobiles [à poursuivre]
- À propos du montage de fond, de la gestion des processus
- Lire la lecture efficace - l'auto - investissement le plus rentable
- Transplantation de systèmes embarqués
- Saisissez une chaîne de caractères à partir du clavier et affichez différents caractères et le nombre d'occurrences de chaque caractère. (la sortie n'est pas séquentielle) résoudre le problème en utilisant la méthode commune de la classe de chaîne
- 2019 Bar _ Aaai ICCN
- Conditions affectant la vitesse de requête de l'interface
- Stack et file d'attente de l'adaptateur STL
- Analyse de la stratégie de lecture et d'écriture du cache
- Classes et objets (1)
- Expérience II Yuv
- Comment synchroniser
- [arxiv2022] grouptransnet: Group transformer Network for RGB - D Salient Object Detection
- Avantages de la salle des machines bgp
- La fosse Piétinée par l'homme vous dit d'éviter les 10 erreurs courantes dans les tests automatisés
- Déterminer s'il s'agit d'un type vide
- Langue C - quelques exercices classiques de langue C
- Openvino Datawhale
- Question 300 Leçon 6 type quadratique
- Analyse du code source et de la conception de redis - - 7. Liste rapide
- Concepts et différences de bits, bits, octets et mots
- Déploiement du projet (version abrégée)
- JDBC Learning and simple Encapsulation