有关结构体函数的问题
using System;using System.Collections.Generic;
using System.Text;
namespace 结构体
{
class Program
{
/// <summary>
/// 定义了一个结构体a
/// </summary>
struct a
{
public string firstName, lastName;
public a(string s1, string s2)
{
firstName = s1;
lastName = s2;
}
public string Name()
{
return firstName + " " + lastName;
}
};
//25行
static void Main(string[] args)
{
a aa = new a("zhangsan", "lisi"); //请问为什么这行语句放在25行就错了!
Console.WriteLine(aa.firstName);
Console.WriteLine(aa.Name());
}
}
}
/*
在Visual Studio 2005 中的输出结果是:
---------------
zhangsan
zhangsan lisi
请按任意键继续. . .
---------------
*/
--------------------编程问答--------------------
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;
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函数时静态的方法
我操
每颜色了
--------------------编程问答-------------------- up , 1,2楼,我的也是黑白的
--------------------编程问答-------------------- 好像是在哀悼震灾 --------------------编程问答-------------------- 我感觉你的疑问主要是你对静态方法与实例方法不太理解,你可以查一下Msdn,静态类是加载包含此类的程序或者命名空间时自动加载的,而静态方法是在第一次被调用前和任何静态构造函数被调用前加载,而实例方法或者实例成员是在被生成实例时加载的。如果你理解了上面的我所说的那一段话,你再看看你的程序为什么放到25行就会出错的原因了。
出错原因:
如果你把aa的声明放到25号,你可以看看,aa是一个实例成员,而main方法是一个静态成员。那好,根据上面的那段话,可以看出在程序执行main前需要把main方法加载到内存中,而aa是一个实例成员需要在声明Program实例时才被加载,那么在.net执行main方法前就无法知道aa所需的内存空间,所以会出错。
另外,估计你在学习C#时也了解到,在静态方法中只能调用静态成员。
希望以上对你有所帮助。 --------------------编程问答-------------------- 先谢谢诸位了
我在看看!
补充:.NET技术 , C#