2016-05-22 1 views
0

Ich kämpfe mit dem Problem fast den ganzen Tag, ich habe keine Antwort im Internet gefunden. Ich weiß, dass es nur eine kleine Sache ist, aber ich habe keine Ahnung, welche. Die Deinstallation (mit TotalUninstaller) von Visual Studio (Community 2015) hat mein Problem nicht behoben. Das ist es für das Wort der Einführung ...Visual Studio 2015 will plötzlich keine neuen Variablen in Klassen erstellen

Ich kann kein Objekt/Variable in Klassen definieren. Egal ob es sich um ein neues Projekt oder um ein bestehendes Projekt handelt.

Beispiel Snippet einer Klasse in bestehenden Projekt:

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

namespace AGDS 
{ 
    public class Similarity 
    { 
     public string index; 
     public double distance; 
     public double similarityRate; 
     public Similarity(string index, double distance) 
     { 
      this.index = index; 
      this.distance = distance; 
     } 
     // NEW PART WHICH HAS BEEN ADDED 
     int b; 
     b = 100; 
     // END 
    } 
} 

Wenn ich zu bauen versuchen, erhalte ich folgende Fehler

Error CS1519 Invalid token '=' in class, struct, or interface member declaration AGDS 
Error CS0103 The name 'b' does not exist in the current context. AGDS 

Außerdem in jedem Projekt in Program.cs Klasse ich in der Lage definieren. Ich habe seltsame Fällen, dass die Installation von lokalen SQL-Server etwas kaputt gemacht ... Hat jemand Idee, was kann falsch sein und wie man es beheben?

+2

'b = 100;' muss in einer Funktion sein. –

+0

Ich glaube nicht, ich bin so dumm :) Ich hatte eine Pause von C#, wo ich hauptsächlich in Web-Sprachen und Bash und ich komplett vergessen Paradigmen von C# ... öffentlichen void setB() { dies .b = 43; } funktioniert ... –

+0

Ich denke, Erstellen einer Set-Funktion zum Zuweisen eines Mitglieds Wert ist wahrscheinlich ein Overkill. –

Antwort

3

Ist es möglich, Variablen zu deklarieren, dann Werte diesen Variablen außerhalb einer Funktion zuweisen?

Versuchen, dies zu tun:

public class Similarity 
{ 
    public string index; 
    public double distance; 
    public double similarityRate; 
    public Similarity(string index, double distance) 
    { 
     this.index = index; 
     this.distance = distance; 
    } 

    int b = 100; //new code 
} 
+0

Nein, es ist nicht ... aber Sie können Felder erstellen und ihnen Werte zuweisen, genau wie Sie ... – furier

1

Sie können einen Standardwert für das b Mitglied wie folgt festgelegt: int b = 100;. Nach der Member-Deklaration können Sie jedoch keinen b Member außerhalb einer Funktion zuweisen. Wenn Sie einem Mitglied einen Wert zuweisen möchten, sollten Sie bestimmen, wann es erledigt werden soll. Wenn Sie also den b Wert, wenn eine Instanz von Similarity festlegen mögen erstellt wird, können Sie es im Konstruktor der Klasse zuordnen:

int b; 
public string index; 
public double distance; 
public double similarityRate; 
public Similarity(string index, double distance) 
{ 
    this.index = index; 
    this.distance = distance; 
    b = 100; 
} 

Auf einer Seite beachten, wenn Sie b als öffentliches Eigentum erklären wollen, die Der richtige Weg, dies zu tun wäre public int b {get; set;}. Da C# 6 können Sie auch einen Standardwert direkt auf die eine Eigenschaft: public int b {get; set;} = 100;

0
Error CS1519 Invalid token '=' in class, struct, or interface member declaration AGDS 
Error CS0103 The name 'b' does not exist in the current context. AGDS 

Diese beiden Meldungen etwas vage sind, aber sie sind richtig. Im Codebeispiel versucht es, wie Code innerhalb einer Methode oder Funktion zu fungieren. Setzen Sie den gleichen Code in eine Methode oder Funktion und es wird funktionieren.

Wenn Sie b als Feld oder Eigenschaft definieren möchten ... Sie können die Deklaration und Zuweisung auf eine Zeile verkleinern. Verwenden Sie für eine Eigenschaft Getters und Settlers.

Verwandte Themen