zhfeng 发表于 2009-12-29 16:17:48

C#中静态方法的疑惑,为什么调用时会出错呢?

开发环境VS2008
==========Progam.cs文件的内容=====

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsolCreateMyClass
{
    class Program
    {
      static void Main(string[] args)
      {
            string[] strName = new string[] { "张三", "李四", "王五" };
            string[] strID = new string[] { "0001", "0002", "0003" };
            MyClass oMyClass = new MyClass();
            for (int i = 0; i < 3; i++)
            {
                oMyClass.ID = strID;
                oMyClass.Name = strName;
                Console.WriteLine("ID={0}", oMyClass.ID);
                Console.WriteLine("Name={0}", oMyClass.Name);
            }

            oMyClass.GetName();
            MyClass.Prints("打印测试");   //此句编译报错,说“ConsolCreateMyClass.MyClass”并不包含“Prints”的定义
            Console.ReadLine();
      }
    }
}

为什么会出现上面错误呢?不是静态方法,要用类名直接调用吗?

===========MyClass.cs文件的内容===
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsolCreateMyClass
{
    class MyClass
    {
      private string name = "";
      private string id = "";


      ////属性
      public string ID      //定义用户ID属性
      {
            get             //可读属性
            {
                return id;
            }
            set             //可写属性
            {
                id = value;
            }
      }

      public string Name      //定义用户Name属性
      {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
      }

      /////方法
      public void GetName()
      {
            Console.WriteLine("Name={0}", name);
      }

      //静态方法,必须用类明调用,而不是对象名
      public static void PrintS(string str)
      {
            Console.WriteLine(str);
      }
    }
}

javenreal 发表于 2009-12-29 16:30:15

很简单:
----------------------
定时是:public static void PrintS(string str)
调用是:MyClass.Prints("打印测试");   

编译器的报告是完全正确滴,呵呵。

zhfeng 发表于 2009-12-29 16:49:27

哎呀,低级错误啊,我说怎么回事,居然调用时弄成小写了,谢谢啊
页: [1]
查看完整版本: C#中静态方法的疑惑,为什么调用时会出错呢?