Visual Studio 2015突然想要在类中创建新的变量

时间:2016-05-22 21:49:04

标签: c# visual-studio visual-studio-2015

我几乎整天都在努力解决这个问题,我在互联网上找不到任何答案。我知道这个修复只是为了转移一个小东西,但我不知道哪一个。 Visual Studio(社区2015)的卸载(使用TotalUninstaller)并没有解决我的问题。这就是介绍之词...

我无法在类中定义任何对象/变量。新项目或现有项目无关紧要。

现有项目中类的示例片段:

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

当我尝试构建时,我收到以下错误

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

此外,在Program.cs类的任何项目中,我都可以定义。 我有一种奇怪的感觉,安装本地SQL服务器可能会破坏某些东西...... 有没有人知道什么是错误的以及如何解决它?

3 个答案:

答案 0 :(得分:3)

是否可以声明变量然后为函数外的变量赋值?

尝试这样做:

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
}

答案 1 :(得分:1)

您可以为b成员设置默认值,如下所示:int b = 100;。但是,在成员声明之后,您将无法为函数外的b成员分配值。如果要为成员分配值,则应确定何时应该执行该操作。因此,如果要在创建b实例时设置Similarity值,可以在类构造函数中指定它:

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;}。从C#6开始,您还可以直接将默认值设置为属性:public int b {get; set;} = 100;

答案 2 :(得分: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

这两条消息有点模糊,但它们是正确的。在代码示例中,它试图像方法或函数中的代码一样。将相同的代码放入方法或函数中,它将起作用。

如果您打算将b作为字段或属性...您可以将声明和赋值缩小为一行。对于财产使用Getters和Settters。