2016-03-21 3 views
0

Warum bekomme ich "} erwartet" jedes Mal, wenn ich mein Programm ausführen? Ich glaube nicht, dass ich eine geschweifte Klammer vermisse. Könnte es etwas anderes sein?Überschreiten Sie Wert und übergeben Sie durch Verweis in C# geschweifte Klammer

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      int[] anArray = new int[] {30, 40, 60, 70, 80, 90, 100, 110}; 

      var byVal = anArray[0]; 
      Console.WriteLine("by value: " + byVal); 

      ref int byRef = anArray[0]; 
      Console.WriteLine("by reference: " + byRef); 


     } 
    } 
} 

enter image description here

+0

Konnten Sie uns den genauen/vollen Fehler zeigen, den Sie sehen? – Castaglia

Antwort

1

Es versagt Code (nicht sicher, warum es auf } up ist Kommissionierung) zu analysieren.

Dies ist ungültig C# -Code

ref int byRef = anArray[0]; 

Sie keine Variable als ref definieren. Sie verwenden es, wenn Sie Parameter an eine Methode übergeben. Zum Beispiel:

void Main() 
{ 
    int b = 6; 
    ChangeIt(ref b); 
    Console.WriteLine(b); 
} 

void ChangeIt(ref int a) 
{ 
    a = 5; 
} 

Wird 5 ausdrucken.

0

Sie scheinen die Bedeutung von ref falsch zu verstehen Schlüsselwort: Es wird verwendet, um Parameter als Referenz zu übergeben, keine Verweise auf lokale Variablen.

C# bestimmt, dass eine Variable basierend auf dem Typ der Variablen eine Referenz oder ein Wert wird: primitive Typen und struct s sind Werttypen, daher speichern Variablen, die diesen Typen entsprechen, Werte. Klassen hingegen sind Referenztypen, so dass Variablen des entsprechenden Typs Referenzen speichern.

Verwandte Themen