我正在学习C#并编写了一些简单的代码,但我不明白为什么我必须在Main方法的范围内声明变量userChoice和numberR,而不是在类的范围内.如果我在类中声明它,我会得到构建错误
using System;
namespace FirstProgram
{
class Program
{
string userChoice;
int numbeR;
static void Main()
{
Console.WriteLine("Write a number...");
userChoice = Console.ReadLine();
numbeR = Convert.ToInt32(userChoice);
Console.WriteLine("You wrote {0}", numbeR);
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但只有这样才能给我带来错误:
using System;
namespace FirstProgram
{
class Program
{
static void Main()
{
string userChoice;
int numbeR;
Console.WriteLine("Write a number...");
userChoice = Console.ReadLine();
numbeR = Convert.ToInt32(userChoice);
Console.WriteLine("You wrote {0}", numbeR);
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不应该在Main中使用这两个变量,只需在上面的类中声明它们吗?我很困惑...感谢任何建议.
你不能这样做,因为它Main()是一个静态函数.您的变量被声明为实例变量,只能在Program类的实例上访问.如果声明userChoice和numbeR作为静态变量,它将编译.
static string userChoice;
static int numbeR;
static void Main()
{
//your code
}
Run Code Online (Sandbox Code Playgroud)
静态成员意味着您可以在不实例化类的情况下使用该成员.想像:
public class MyClass
{
public static int StaticInt;
public int NonStaticInt;
}
Run Code Online (Sandbox Code Playgroud)
意味着你可以这样做:
MyClass.StaticInt = 12; // legal
MyClass.NonStaticInt = 12; // error, can't staticly access instance member
Run Code Online (Sandbox Code Playgroud)
并且所有类都可以访问该更改,因为MyClass.StaticInt程序中只有一个.要进行更改NonStaticInt,您必须创建该类的实例,如下所示:
MyClass mine = new MyClass();
mine.NonStaticInt = 12; // legal
mine.StaticInt = 12; // Error, cannot access static member on instance class.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |