A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马—代忠 中级黑马   /  2012-8-6 11:44  /  1690 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  class Program
    {
        /// <summary>
        /// 定义一个static方法
        /// </summary>
        /// <param name="num1">第一个int型参数</param>
        /// <param name="num2">第二个int型参数</param>
        /// <returns>返回int型</returns>
        public static int Add(int num1, int num2)
        {
            return num1 + num2;
        }
        /// <summary>
        /// 重新定义Add方法
        /// </summary>
        /// <param name="num1">第一个int型参数</param>
        /// <param name="num2">第二个double型参数</param>
        /// <returns>返回double型</returns>
        public double Add(int num1, double num2)
        {
            return num1 + num2;
        }

        /// <summary>
        /// 重新定义Add方法,与第一个方法的参数个数不同
        /// </summary>
        /// <param name="num1"></param>
        /// <param name="num2"></param>
        /// <param name="num3"></param>
        /// <returns></returns>
        public int Add(int num1, int num2, int num3)
        {
            return num1 + num2 + num3;
        }
        static void Main(string[] args)
        {
            Program pro = new Program();//实例化类Program的对象pro
            int x = 14;
            int y = 21;
            int z = 9;
            double y2 = 5.3;
            Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//此行报错
            Console.WriteLine("{0}+{1}={2}", x, y2, pro.Add(x, y2));
            Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, pro.Add(x, y, z));
            Console.ReadKey();
        }
    }
错误        1        无法使用实例引用来访问成员“_05.重载方法的实现.Program.Add(int, int)”;请改用类型名来限定它        G:\基础复习\第1阶段 重点复习内容(5天)\04属性,方法,结构,类\05.重载方法的实现\Program.cs        49        52        05.重载方法的实现

请问这是什么原因,该怎么解决?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

倒序浏览
1,static方法中不能直接使用非静态成员, 因为非静态成员与实例相关,通过对象点取间接使用;
2,static方法中不能用this(与实例相关);
3,非static方法中可以使用static成员。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
public static int Add(int num1, int num2)
         {
             return num1 + num2;
         }
去掉static 就可以了。
不能直接调用静态方法

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马