2016-05-22 6 views
0

私はこの問題でほぼ一日中苦労しています。私はインターネットで何の答えも見つかりませんでした。私はこの修正がただ一つの小さなものを移すことであることを知っていますが、どちらがどれかわからないです。ビジュアルスタジオ(コミュニティ2015)のアンインストール(TotalUninstallerを使用)は私の問題を解決しませんでした。それは紹介の言葉のためのものです...Visual Studio 2015が突然クラス内に新しい変数を作成したくない

私はクラス内にオブジェクト/変数を定義することはできません。新しいプロジェクトや既存のプロジェクトでは問題ではありません。既存のプロジェクト内のクラスの

例スニペット:私は、私は次のエラーのProgram.csクラスの任意のプロジェクトでさらに

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 

を受け取る構築しようとした際

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 
    } 
} 

私がすることができますよ定義する。 私は、ローカルSQLサーバのインストールが何かを壊す可能性があると奇妙な告発があります... 誰かが間違っている可能性があり、どのようにそれを修正するアイデアを持っていますか?

+2

'b = 100;'は関数内にある必要があります。 –

+0

私は私は私がWeb言語とbashで主にコーディングされたC#のから休憩を持っていたと私は完全にC#のパラダイムを忘れてしまった:)愚かだとは思わない... ます。public voidセットB() { この.b = 43; } works ... –

+0

私はメンバの値を割り当てるための関数を作成することはおそらく過剰なものだと思います。 –

答えて

3

変数を宣言することは可能ですか次には関数外の変数に値を代入しますか?

はこれを行うにしてください:int b = 100;

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

いいえ...しかし、フィールドを作成して、あなたのように値を割り当てることができます... – furier

1

は、次のようなbメンバーのデフォルト値を設定することができます。ただし、メンバー宣言後には、関数外のメンバーbに値を割り当てることはできません。メンバーに値を割り当てる場合は、いつ実行すべきかを判断する必要があります。ですから、Similarityのインスタンスが作成されたとき、あなたはクラスのコンストラクタに割り当てることができb値を設定する場合:サイドノートで

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; 
} 

を、あなたは公共の財産としてbを宣言したい場合は、これを行う正しい方法はpublic int b {get; set;}です。 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 

これら2件のメッセージが少し曖昧ですが、彼らは正しいです:C#6ので、あなたはまた、プロパティにデフォルト値を直接設定することができます。コード例では、メソッドまたは関数内でコードのように動作しようとしています。同じコードをメソッドや関数に入れるとうまくいきます。

bをフィールドまたはプロパティにする場合...宣言と割り当てを1行に縮小することができます。プロパティではGettersとSetttersを使用します。

関連する問題