创建变量时出现问题 public
Problems when making a variable public
我在理解变量何时为 public
并且可以被其他 类 访问以及何时不能访问时遇到了一些问题。现在,我收到 Menu()
中的 run
变量未声明的错误。我试过在声明前面放一个 "public" ,但这给了我很多错误。如何在 Main
public 中进行 run
声明?
public static void Main(string[] args)
{
var run = 0;
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
我试图找到解决方案,但没有找到任何解决方案,尽管肯定有人问过同样的问题。顺便说一句,Main
和 Menu
函数看起来可以合并,但为代码的另一部分提供了一个有用的解决方法。
您不能将所有变量设为 public
,例如示例中的局部变量 run
。访问修饰符仅适用于在方法外部声明的class变量(所谓的字段):
public class Test
{
public static int run = 0;
public static void Main(string[] args)
{
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
run
将被声明为您的 class:
的 属性
class YourClass
{
public static int run = 0;
public static void Main(string[] args)
{
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
超出其范围的变量不可访问。这意味着在定义它们的块外(大括号内)(为简单起见)。所以你只能在这样的子块中访问 run
:
public static void Main(string[] args)
{
var run = 0;
{
run++;
if (run <= 1) {
Welcome();
}
}
另一种方法是使 class 的变量部分成为一个字段,通常是私有的:
public class Program
{
private static int run;
public static void Main(string[] args)
{
run = 0;
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
我想做面向对象的编程,你可以把它封装在一个class中:
public class Program
{
public static void Main(string[] args)
{
var myClass = new MyClass();
myClass.Run = 0;
myClass.Menu();
}
}
public class MyClass
{
public int Run { get; set; }
public void Menu()
{
Run++;
if (Run <= 1) {
Welcome();
}
}
}
您的问题有很多答案。但是你缺少的是对Variable and Method Scope in Microsoft .NET.
的理解
以下是该文章的节选(对 VB.Net 参考表示抱歉,但它仍然适用)。
变量范围 - 您可以在程序中的四个不同位置声明变量。您选择声明变量的位置决定了范围。
- 块 - 如果您在块结构中声明一个变量,例如
If
语句,该变量的作用域仅到块结束为止。生命周期是直到程序结束。
- Procedure - 如果您在过程中声明一个变量,但在任何
If
语句之外,范围是直到 End Sub
或 End Function
。变量的生命周期是直到过程结束。
- Module/Class - 您可以在任何过程之外声明变量,但它必须在
Class…End Class
或 Module…End Module
语句中。范围是此模块内的任何过程。在 class 中定义的变量的生命周期是直到对象被垃圾收集器清理为止。在模块中定义的变量的生命周期是直到程序结束。
- Project - 您可以在
Module…End Module
语句中声明一个 Public
变量,该变量的范围是项目中的任何过程或方法。变量的生命周期将持续到程序结束。
我在理解变量何时为 public
并且可以被其他 类 访问以及何时不能访问时遇到了一些问题。现在,我收到 Menu()
中的 run
变量未声明的错误。我试过在声明前面放一个 "public" ,但这给了我很多错误。如何在 Main
public 中进行 run
声明?
public static void Main(string[] args)
{
var run = 0;
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
我试图找到解决方案,但没有找到任何解决方案,尽管肯定有人问过同样的问题。顺便说一句,Main
和 Menu
函数看起来可以合并,但为代码的另一部分提供了一个有用的解决方法。
您不能将所有变量设为 public
,例如示例中的局部变量 run
。访问修饰符仅适用于在方法外部声明的class变量(所谓的字段):
public class Test
{
public static int run = 0;
public static void Main(string[] args)
{
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
run
将被声明为您的 class:
class YourClass
{
public static int run = 0;
public static void Main(string[] args)
{
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
超出其范围的变量不可访问。这意味着在定义它们的块外(大括号内)(为简单起见)。所以你只能在这样的子块中访问 run
:
public static void Main(string[] args)
{
var run = 0;
{
run++;
if (run <= 1) {
Welcome();
}
}
另一种方法是使 class 的变量部分成为一个字段,通常是私有的:
public class Program
{
private static int run;
public static void Main(string[] args)
{
run = 0;
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
我想做面向对象的编程,你可以把它封装在一个class中:
public class Program
{
public static void Main(string[] args)
{
var myClass = new MyClass();
myClass.Run = 0;
myClass.Menu();
}
}
public class MyClass
{
public int Run { get; set; }
public void Menu()
{
Run++;
if (Run <= 1) {
Welcome();
}
}
}
您的问题有很多答案。但是你缺少的是对Variable and Method Scope in Microsoft .NET.
的理解以下是该文章的节选(对 VB.Net 参考表示抱歉,但它仍然适用)。
变量范围 - 您可以在程序中的四个不同位置声明变量。您选择声明变量的位置决定了范围。
- 块 - 如果您在块结构中声明一个变量,例如
If
语句,该变量的作用域仅到块结束为止。生命周期是直到程序结束。
- Procedure - 如果您在过程中声明一个变量,但在任何
If
语句之外,范围是直到End Sub
或End Function
。变量的生命周期是直到过程结束。
- Module/Class - 您可以在任何过程之外声明变量,但它必须在
Class…End Class
或Module…End Module
语句中。范围是此模块内的任何过程。在 class 中定义的变量的生命周期是直到对象被垃圾收集器清理为止。在模块中定义的变量的生命周期是直到程序结束。
- Project - 您可以在
Module…End Module
语句中声明一个Public
变量,该变量的范围是项目中的任何过程或方法。变量的生命周期将持续到程序结束。