Domanda

A quanto ho capito, C # passa parametri in metodi di riferimento. In VB.NET, è possibile specificare questo con ByVal e ByRef. L'impostazione predefinita è ByVal.

E 'questo per la compatibilità con Visual Basic 6.0, o è solo casuale? Inoltre, come posso specificare cosa usare in C #? Ho un po 'come l'idea di passare i parametri per valore.

È stato utile?

Soluzione

I parametri in C # sono, da default passato per valore. Non v'è alcun modificatore per rendere questo esplicito, ma se si aggiunge ref / out il parametro è per riferimento.

La solita confusione qui è la differenza tra:

  • passando un valore di tipo per valore (modifiche al valore di tipo non sono visibili al chiamante, ma il valore-tipi dovrebbero idealmente essere in ogni caso immutabile)
  • passando un valore di tipo per riferimento (modifiche al valore-tipo sono visibili al chiamante, ma il valore-tipi dovrebbero idealmente essere in ogni caso immutabile - così importante lo dirò due volte; p)
  • passano un riferimento per valore (modifiche campi / proprietà del ref-tipo sono visibili al chiamante, ma riassegnazione l'arbitro tipo a un nuovo / diverso oggetto è non visibile)
  • passano un riferimento per riferimento (cambiamenti campi / proprietà, e riassegnando il riferimento sono visibili al chiamante)

Altri suggerimenti

Il passaggio per valore è l'impostazione predefinita in C #. Tuttavia, se la variabile di essere passati è di tipo di riferimento, allora si sta passando il di riferimento per valore. Questo è forse l'origine della vostra confusione.

In sostanza, se si passa un riferimento per valore, allora è possibile modificare l'oggetto si riferisce a questi cambiamenti e persisterà fuori del metodo, ma non è possibile effettuare variabile riferimento a un oggetto diverso e avere che il cambiamento persistono fuori dal metodo.

I parametri in C # vengono passati "ByVal" per impostazione predefinita. È necessario specificare "ref" o "out", se si vuole un comportamento diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top