【问题标题】:Can't access Main class variables无法访问主类变量
【发布时间】:2015-12-07 18:26:37
【问题描述】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SomeColors
{
    class Program
    {
        private static int currentCursorX = Console.CursorLeft;
        private static int currentCursorY = Console.CursorTop;

        static void Main(string[] args)
        {
        }
   }
}

所以我无法访问我的Program 类变量currentCursorXcurrentCursorY。 这是为什么呢?

【问题讨论】:

  • 无法访问是什么意思?你有错误吗?
  • 您尝试从哪里访问它?
  • 那些是静态字段,而不是“全局变量”。 C# 是一种基于对象的语言,而不是过程语言。阅读一下两者之间的差异可能是值得的 - 您应该尽早了解您的错误。
  • @Luaan 因此,如果我将它们设为非静态,我可以从 Main 将它们作为类变量访问?
  • 不,因为Main 也是static。您至少应该真正阅读基础知识 - 什么是类,什么是字段,实例成员和静态成员之间的区别以及访问修饰符的处理方式。

标签: c# .net main class-variables


【解决方案1】:

您可以在它们定义的类中访问private 变量(在您的情况下为Program)!

将它们设为public,以便您可以从其他类访问它们。

public static int currentCursorX = Console.CursorLeft;
public static int currentCursorY = Console.CursorTop;

您应该阅读有关Access Modifiers 的更多信息。尽管请记住,在您的类中使用公共字段并不是一个好方法。

【讨论】:

  • 哦,public 修饰符完成了这项工作。非常感谢伙计。但它们是类变量不是吗?就像当你开始一个新课程时你定义它们 private 一样,为什么在这里它不起作用?
  • 将它们设为“公开”,以便您可以从其他类访问它们。
  • @InHere 您想从哪里访问它们?您将它们定义为静态,因此一旦它们公开,您应该能够通过范围运算符从任何地方访问它们
  • 我正在尝试从 Main 方法访问它们。
  • @InHere 嗯,不。您一定遗漏了一些关键的代码。 private static 字段将在同一类中定义的静态方法中可用(即Main 将在Program 中看到静态私有字段)。你跳过了一些东西。
【解决方案2】:

如果您从程序集外部访问它,请使用以下代码:

public class Program
    {
        public static int currentCursorX = Console.CursorLeft;
        public static int currentCursorY = Console.CursorTop;

        static void Main(string[] args)
        {

        }
   }

在你的班级

using SomeColors;

class Class1
{
    int i= Program.currentCursorX;
}

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2020-11-30
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多