【发布时间】:2016-04-14 02:29:48
【问题描述】:
请注意,这是未完成的代码,但只是面临一些小问题,因为我使用了很多 c++ OOP 概念。尝试从另一个平台进行更改时,我可能会遇到一些问题。
编译并声明非静态方法/属性错误时出现错误
using System;
public class People
{
string name;
int age;
int height;
public virtual void insertDetail(People stu)
{
Console.Write("Please enter name : ");
stu.name = Console.ReadLine();
Console.Write("Please enter age : ");
while(!int.TryParse(Console.ReadLine(), out stu.age))
{
Console.WriteLine("You enter characters! Please re-insert");
}
Console.Write("Please enter height: ");
while(!int.TryParse(Console.ReadLine(), out stu.height))
{
Console.WriteLine("You enter characters! Please re-insert");
}
}
}
public class Class : People
{
static People[] students = new People[5];
public override void insertDetail(People stu)
{
Console.WriteLine("==================================");
base.insertDetail(stu);
}
public static void Main(string[] args)
{
for (int i = 0; i < students.Length; i++)
{
students[i] = new People();
insertDetail(students[i]);
}
Console.ReadKey();
}
}
【问题讨论】:
-
由于您的
Main是static,所以您无法获得students哪个... 我不知道它在哪里声明! -
是的,在 Main 中,
students没有被声明。它是一个完全不同的类中的实例字段。无论如何,Main 在哪个班级?无论如何,你需要一个 `` 在 Main 中的实例。 -
insertDetail是一个实例方法而不是静态方法,为Class创建一个实例并使用它。前Class c = new Class(); c.insertDetail(..) -
您还需要一个 People 实例来调用 insertDetail,Class.People 应该是
List<People>,而不是数组。然后你可以添加任意数量的。 -
对不起。我重新编辑我的代码!
标签: c# non-static