C# 向C程序添加全局变量时必须删除[StatThread]?

C# 向C程序添加全局变量时必须删除[StatThread]?,c#,compiler-errors,C#,Compiler Errors,我的代码有问题。我想这很简单,但我缺乏OOP和C方面的经验,所以我不得不问你 我的代码如下所示: namespace RR { static class Program { [STAThread] private static string token; static void Main() { [...] } } } 问题是变量标记不起作用/无法编译。我想这个错

我的代码有问题。我想这很简单,但我缺乏OOP和C方面的经验,所以我不得不问你

我的代码如下所示:

namespace RR
{
    static class Program
    {
        [STAThread]

        private static string token;

        static void Main()
        {
            [...]
        }
    }
}
问题是变量标记不起作用/无法编译。我想这个错误很容易被发现,但是我已经尝试过任何版本的static、publicstatic和使用函数setter和getter来完成这项工作,但是没有任何效果。我发现了这个:,但后来我不得不删除[StatThread],我甚至不知道它是做什么的,所以我宁愿用另一种方式解决这个问题

当我在C 2012中创建一个新项目时,源代码是自动设置的


澄清:我如何在这样的静态类中使用公共变量而不必删除StatThread?

[StatThread]是一个属性,与它下面的代码直接相关-将它放回原来的主函数上方,并将变量放在上面,这样就可以了


你是正确的,你需要用你建议的static关键字声明你的变量,

[stathread]是一个属性,并且与它下面的代码直接相关-把它放回主函数原来的位置,把你的变量放在它上面,你就没事了

正确的是,您需要使用static关键字声明变量,正如您所建议的那样

[StatThread]是方法的属性。它将需要保持在静态void Main之前。通常,最好的做法是不要在入口点中包含业务逻辑,而是从Main中创建工作类的新实例

如果您想编译它,请将[StatThread]移动到静态void Main的正上方,并更改私有静态字符串标记

[StatThread]是方法的属性。它将需要保持在静态void Main之前。通常,最好的做法是不要在入口点中包含业务逻辑,而是从Main中创建工作类的新实例


如果您想编译它,请将[StatThread]移动到静态void Main的正上方,并更改私有静态字符串标记

你的主方法中的Program p=new Program呢?错误是否不清楚?无法在静态类中声明实例成员…@L.B:正如我所写的,我也尝试过使用静态public[…],但是它也不起作用。你的主方法中的程序p=新程序呢?错误是否不清楚?无法在静态类中声明实例成员…@L.B:正如我所写的,我也尝试过静态公共[…],但它也不起作用。谢谢你,先生!你是对的,把主线程移到stathread下面修复了这个问题,静态变量就像我在internetz上发现的那样工作。我会在4分钟内接受:@L.B:这对初学者来说是正确的。。。。我认为问题在于其他方面,但在静态类中使用静态变量是可行的。问题是StatThread在这之前,它把事情搞砸了。@OptimusCrime但是这个答案没有提到任何关于静态类中的实例变量的问题。正如您已经注意到的那样,在类中移动STAThread属性是不够的。@L.B:不,但与私有静态字符串标记相结合;正如我在第一篇文章中所写,它就像一个符咒。@L.B-我以为他已经解决了静电问题,但我已经澄清了,谢谢你,先生!你是对的,把主线程移到stathread下面修复了这个问题,静态变量就像我在internetz上发现的那样工作。我会在4分钟内接受:@L.B:这对初学者来说是正确的。。。。我认为问题在于其他方面,但在静态类中使用静态变量是可行的。问题是StatThread在这之前,它把事情搞砸了。@OptimusCrime但是这个答案没有提到任何关于静态类中的实例变量的问题。正如您已经注意到的那样,在类中移动STAThread属性是不够的。@L.B:不,但与私有静态字符串标记相结合;正如我在第一篇文章中所写,它就像一个符咒。@L.B-我以为他已经解决了静态问题,但我已经在上面澄清了