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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李京 中级黑马   /  2012-9-9 11:15  /  1673 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李京 于 2012-9-9 13:08 编辑
  1. class Program
  2.     {
  3.         /// <summary>
  4.         /// 定义一个static方法
  5.         /// </summary>
  6.         /// <param name="num1">第一个int型参数</param>
  7.         /// <param name="num2">第二个int型参数</param>
  8.         /// <returns>返回int型</returns>
  9.         public static int Add(int num1, int num2)
  10.         {
  11.             return num1 + num2;
  12.         }
  13.         /// <summary>
  14.         /// 重新定义Add方法
  15.         /// </summary>
  16.         /// <param name="num1">第一个int型参数</param>
  17.         /// <param name="num2">第二个double型参数</param>
  18.         /// <returns>返回double型</returns>
  19.         public double Add(int num1, double num2)
  20.         {
  21.             return num1 + num2;
  22.         }

  23.         /// <summary>
  24.         /// 重新定义Add方法,与第一个方法的参数个数不同
  25.         /// </summary>
  26.         /// <param name="num1"></param>
  27.         /// <param name="num2"></param>
  28.         /// <param name="num3"></param>
  29.         /// <returns></returns>
  30.         public int Add(int num1, int num2, int num3)
  31.         {
  32.             return num1 + num2 + num3;
  33.         }
  34.         static void Main(string[] args)
  35.         {
  36.             Program pro = new Program();//实例化类Program的对象pro
  37.             int x = 14;
  38.             int y = 21;
  39.             int z = 9;
  40.             double y2 = 5.3;
  41.             <FONT color=red>Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//此行报错</FONT>
  42.             Console.WriteLine("{0}+{1}={2}", x, y2, pro.Add(x, y2));
  43.             Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, pro.Add(x, y, z));
  44.             Console.ReadKey();
  45.         }
  46.     }
复制代码
错误        1        无法使用实例引用来访问成员“_05.重载方法的实现.Program.Add(int, int)”;请改用类型名来限定它        G:\基础复习\第1阶段 重点复习内容(5天)\04属性,方法,结构,类\05.重载方法的实现\Program.cs        49        52        05.重载方法的实现

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

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

2 个回复

倒序浏览
1、Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//你这里面的pro.Add()明显调用的是方法 public static int Add(int num1, int num2);

2、 public static int Add(int num1, int num2);的前面有static修饰,也就是说此方法为静态方法;

3、静态方法是不能被对象调用的,该通过类名(Program)来调用;

4、改正后:Console.WriteLine("{0}+{1}={2}", x, y,Program.Add(x, y));

【备注】:你做的这个code是为了演示重载,所以建议你把2中的static修饰符去掉;

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
静态成员是不用new就能用的方法,static方法其实就是普通函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马