该名称在当前上下文中不存在?

时间:2014-03-26 15:11:22

标签: c#

从今天开始,我是c#中的一个总菜鸟。我无法找到一个好的教程或任何东西,可以解决这个明显愚蠢的问题。基本上,我尝试将程序从Python转换为C#。通常在Python中我在构造函数中定义常量。我到底应该把它们放在c#中?我试着把它们放在构造函数中然后我把它们放在Main()中,因为有这个错误。但错误仍然存​​在。

static void Main(string[] args)
    {
    var _top = 0
    ...
    }
public string[] topToken()
    {
        if (_top < _tokens.Count())
        { return _tokens[_top];}

3 个答案:

答案 0 :(得分:2)

_topMain内声明,因此它不会在topToken方法中具有可见性。它是一个局部变量,仅限于Main

要为整个类提供变量可见性,您需要在任何方法之外声明它们。

例如:

public class SomeClass
{
    public int someVariable; // all methods in SomeClass can see this

    public void DoIt() {
      // we can use someVariable here
    }
}

注意,通过将someVariable公开,它也意味着我们可以直接访问它。例如:

SomeClass x = new SomeClass();
x.someVariable = 42;

如果要防止这种情况,只允许使用方法/属性/等。为了能够看到someVariable变量的类,您可以将其声明为私有。

如果您需要公共变量,通常最好这样声明(这是auto-implemented property)的示例:

public class SomeClass
{
    public int SomeVariable { get; set; }

    public void DoIt() {
      // we can use SomeVariable here
    }
}

这使用

答案 1 :(得分:0)

将您的代码更改为:

const int _top = 0;

static void Main(string[] args)
    {
    ...
    }
public string[] topToken()
    {
        if (_top < _tokens.Count())
        { return _tokens[_top];}

要使_top在整个班级都可访问,您必须将其声明为字段或常量。字段需要实际存储,而常量由编译器简单地替换为实际值。正如您将_top描述为常量一样,我决定将其声明为此。

如果你需要一个字段而不是一个常量,你必须声明它static,因为它是以静态方法访问的:

static int _top = 0;

由于public的声明中没有protected_top,因此该类是私有的。如果您愿意,可以在声明前添加private,但如果缺少可见性,那将是默认值。

答案 2 :(得分:0)

如果您希望在_top方法之外使用Main,请将其放在此处:

int _top = 0; //here instead
static void Main(string[] args)
{
    ...
}
public string[] topToken()
{
    if (_top < _tokens.Count())
    { return _tokens[_top];}
}