我几乎整天都在努力解决这个问题,我在互联网上找不到任何答案。我知道这个修复只是为了转移一个小东西,但我不知道哪一个。 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服务器可能会破坏某些东西...... 有没有人知道什么是错误的以及如何解决它?
答案 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。