La position actuelle:Accueil du site>C #: in, out, ref Keywords

C #: in, out, ref Keywords

2022-07-23 13:51:47QQ 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é au hasard