a aa = new a("zhangsan", "lisi"); //请问为什么这行语句放在25行就错了!
static void Main(string[] args)
{
//Console.WriteLine(aa.firstName);
//Console.WriteLine(aa.Name());
}请问为什么这行语句放在25行就错了!本身没错。
不过在Console.WriteLine(aa.firstName);的时候,class Program还没有实例化,它的成员aa你当然没有办法访问。
using System.Collections.Generic;
using System.Text; namespace 结构体
{
class Program
{
/// <summary>
/// 定义了一个结构体a
/// </summary>
static struct a
{
public string firstName, lastName; public a(string s1, string s2)
{
firstName = s1;
lastName = s2;
} public string Name()
{
return firstName + " " + lastName;
}
};
//25行
staic a aa = new a("zhangsan", "lisi");
static void Main(string[] args)
{
Console.WriteLine(aa.firstName);
Console.WriteLine(aa.Name());
}
}
} 因为你的mian函数时静态的方法
我操
每颜色了
出错原因:
如果你把aa的声明放到25号,你可以看看,aa是一个实例成员,而main方法是一个静态成员。那好,根据上面的那段话,可以看出在程序执行main前需要把main方法加载到内存中,而aa是一个实例成员需要在声明Program实例时才被加载,那么在.net执行main方法前就无法知道aa所需的内存空间,所以会出错。
另外,估计你在学习C#时也了解到,在静态方法中只能调用静态成员。希望以上对你有所帮助。