« Parameter modifiers » : différence entre les versions
Apparence
Ligne 17 : | Ligne 17 : | ||
// pass the reference type parameter by value: the reference is copied and passed to the method | // pass the reference type parameter by value: the reference is copied and passed to the method | ||
// if the parameter is overwritten | // if the parameter is overwritten (the copy of the reference is overwritten), it doesn't affect the initial object | ||
void Method2(Item item) => item = new("new name 2"); | void Method2(Item item) => item = new("new name 2"); | ||
// pass the reference type parameter by reference: the reference is passed to the method | // pass the reference type parameter by reference: the reference is passed by reference to the method | ||
// if the parameter is overwritten | // if the parameter is overwritten (the initial reference is overwritten), it does affect the initial object | ||
void Method3(ref Item item) => item = new("new name 3"); | void Method3(ref Item item) => item = new("new name 3"); | ||
</kode> | </kode> |
Version du 24 mai 2024 à 15:08
ref
Pass a parameter by reference.
// value type
var i = 10;
Method0(i); // 10
Method1(ref i); // 11
void Method0(int i) => i++; // pass the value type parameter by value: make a copy
void Method1(ref int i) => i++; // pass the value type parameter by reference
// reference type
var item = new Item("init name");
Method2(item); // init name
Method3(ref item); // new name 3
// pass the reference type parameter by value: the reference is copied and passed to the method
// if the parameter is overwritten (the copy of the reference is overwritten), it doesn't affect the initial object
void Method2(Item item) => item = new("new name 2");
// pass the reference type parameter by reference: the reference is passed by reference to the method
// if the parameter is overwritten (the initial reference is overwritten), it does affect the initial object
void Method3(ref Item item) => item = new("new name 3");
|