当前位置:编程学习 > C#/ASP.NET >>

有关结构体函数的问题

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,