有人能告诉我为什么我们不能在class without Method中使用Console.WriteLine吗。我正试图做到这一点,但同谋犯了一个错误。我知道这是错误的,但我只想知道这样做的正当理由。
public class AssemblyOneClass2
{
Console.WriteLine("");
}
问题不是使用WriteLine
。除了声明成员变量(和属性事件等)或函数之外,不能在那里放置任何代码。对WriteLine
的类似代码的调用属于这些函数的主体。至于原因,您希望该代码何时运行?我想你不能回答这个问题,编译器也不能。
方法是一个包含一系列语句的代码块。程序通过调用方法并指定任何所需的方法参数来执行语句。在C#中,每个执行的指令都是在方法的上下文中执行的。
因此必须写入方法内部。否则CLR不知道应该在什么时候执行该代码。这是C#的基础。
class封装构造函数、函数、字段和属性。因此,您只能在函数或构造函数中编写任何代码语句。
public class AssemblyOneClass2
{
static void Main(string[] args)
{
Console.WriteLine("");
}
}
你需要一个实际的方法来实现任何事情。上面的代码段显示了运行"Console.Writeline("");"
的正确方法
因为Console.WriteLine("");
不能是(或)不是所述类AssemblyOneClass2
的成员字段。
多说几句;在定义类的同时定义成员字段(数据成员和方法),以便为该类提供一些行为以及它可以执行的所有操作。
例如:具有Name
和City
属性的Student
类
Class student
{
public string Name {get;set;}
public string City {get;set;}
}
只需在类中调用Writeline()
方法;你认为你在定义什么行为?
即使你在下面保持类声明为空,这样说仍然没有什么意义;还没有定义类的行为,它现在只是一个存根。
public class AssemblyOneClass2
{
}
我认为只有在创建所创建类的对象时才会分配内存,所以让我们想象一下,我们可以编写Console.WriteLine();在课堂上。现在想象一下,您想要从主函数中执行这一行。你该怎么称呼它?认为通常是Obj。<方法/函数/数据成员>。编译器将如何知道它必须执行Console.WriteLine();在课堂上。因此,为了让编译器执行这一行,它必须是已分配内存的东西的一部分,并且可以从类的实例(即我们创建的对象)调用。
我希望我在这里讲得有点道理。