搜索
bottom↓
回复: 2

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

[复制链接]

出0入0汤圆

发表于 2009-12-29 16:17:48 | 显示全部楼层 |阅读模式
开发环境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);
        }
    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-12-29 16:30:15 | 显示全部楼层
很简单:
----------------------
定时是:public static void PrintS(string str)
调用是:MyClass.Prints("打印测试");     

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

出0入0汤圆

 楼主| 发表于 2009-12-29 16:49:27 | 显示全部楼层
哎呀,低级错误啊,我说怎么回事,居然调用时弄成小写了,谢谢啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 15:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表