父类方法:
 public abstract class Operation
    {
        public int NumberA { get; set; }
        public int NumberB { get; set; }
        public abstract void GetResult();
    }子类方法:
 /// <summary>
    /// 计算类
    /// </summary>
    public class Computer
    {
        public void Com(Operation oper)
        {
            oper.GetResult();
        }
    }
    /// <summary>
    /// 加法类
    /// </summary>
    public class Add:Operation
    {
        public override void GetResult()
        {
            Console.WriteLine("请输入被加数:");
            NumberA = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入加数:");
            NumberB = int.Parse(Console.ReadLine());
            result = NumberA + NumberB;
            return;
        }
    }
这个为什么不能return回去呢测试类:    /// <summary>
    /// 测试类
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Computer com = new Computer();
            Add add = new Add();
            com.Com(add);
            
        }
    }然后就不知道怎么做了怎么把这个方法跟表格融合在一起啊!!!请高手指点啊。

解决方案 »

  1.   


     public abstract class Operation
        {
            public int NumberA { get; set; }
            public int NumberB { get; set; }
            public abstract int GetResult();//返回的int
        }
        public class Computer
        {
            public void Com(Operation oper)
            {
                Console.WriteLine("{0}",oper.GetResult());//获得需要打印出来才可以看到返回值
            }
        }
        public class Add : Operation
        {
            public override int GetResult()
            {
                Console.WriteLine("请输入被加数:");
                NumberA = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入加数:");
                NumberB = int.Parse(Console.ReadLine());
               int result = NumberA + NumberB;//添加一个定义result  
                return result;//返回值
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Computer com = new Computer();
                Add add = new Add();
               com.Com(add);
            }
        }
      

  2.   

    高手谢谢啦是说得定义方法的返回值的类型,才能用return么?
    还有个小小的问题。。怎么将form窗体跟这个实现计算功能的类结合到一起,就是最后的结果做出来跟图片上的一样,中间的运算符号有个下拉菜单。。
      

  3.   

    void 也可以用return 不过是没有返回值 就像你上面的 
    像你说的功能没必要那么复杂的 添加三个TextBox 控件 一个ComboBox控件 一个button控件 很容易实现的代码如下 可以实现你所说的基本功能 
     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                comboBox1.Items.Add("+");
                comboBox1.Items.Add("-");
                comboBox1.Items.Add("*");
                comboBox1.Items.Add("/");
            }        private void button1_Click(object sender, EventArgs e)
            {
               
                float n1;
                float n2;
               
                 float.TryParse(textBox1.Text, out n1);
                 float.TryParse(textBox2.Text, out n2);
                switch (comboBox1.Text)
                {
                    case "+":
                        textBox3.Text = (n1 + n2).ToString();
                        break;
                    case "-":
                        textBox3.Text = (n1 - n2).ToString();
                        break;
                    case "*":
                        textBox3.Text = (n1 * n2).ToString();
                        break;
                    case "/":
                        textBox3.Text = (n1 / n2).ToString();
                        break;
                    default:
                        break;
                }        }
        }
      

  4.   


    namespace 计算器
    {
        public abstract class Operation
        {
            public double NumberA { get; set; }
            public double NumberB { get; set; }
            public abstract double GetResult();
        }
        public class 工厂
        {
            public static Operation GetOperation(String className)
            {
                try
                {
                    Type type = Type.GetType(className);
                   ConstructorInfo con= type.GetConstructor(new Type[] { });
                   Operation op = (Operation)con.Invoke(null);
                   return op;
                }
                catch { }
                return null;
            }
        }    public class Add : Operation
        {
            public override double GetResult()
            {
                return NumberA + NumberB;
            }
        }
        public class Sub : Operation
        {
            public override double GetResult()
            {
                return NumberA - NumberB;
            }
        }
        public class Div : Operation
        {
            public override double GetResult()
            {
                return NumberA / NumberB;
            }
        }
        public class Multi : Operation
        {
            public override double GetResult()
            {
                return NumberA * NumberB;
            }
        }
    }
      

  5.   

    小菜来这里,这里有大叔.
    http://download.csdn.net/detail/samsone/4226069
    讲解了计算器的加减乘除功能的封装、继承、多态...
    有源码
      

  6.   

    public static IOperation GetInstance(string oprStr)
            {
                IOperation opr = null;
                switch (oprStr) //根据用户输入的运算类型实例化具体的运算类对象,生产相应的对象
                    {
                        case "+":
                           // result = opr.Add(numberA, numberB);
                            opr = new Add();
                            break;
                        case "-":
                            //result = opr.Sub(numberA, numberB);
                            opr = new Sub();
                            break;
                        case "*":
                            //result = opr.Mul(numberA, numberB);
                            opr = new Mul();
                            break;
                        case "/":
                            //result = opr.Div(numberA, numberB);
                            opr = new Div();
                            break;
                        case "^":
                            //result = opr.Div(numberA, numberB);
                            opr = new MN();
                            break; 
                    }
                return opr;
            }
     public interface IOperation
        {
            int GetResult(int x,int y);
        }
    public class Add : IOperation
        {
            public int GetResult(int x, int y)
            {
                return x + y;
            }
        }