日期:2014-05-18  浏览次数:20990 次

小弟又来请教问题了~
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace p2_12
{
  class Program
  {
  static void Main(string[] args)
  {
  BankCard card1 = new BankCard() { money = 1000 };
  Account acc1 = card1;
  Ipay i1 = (BankCard)acc1;
  acc1 = new Account() { money = 500 };
  if (acc1 is BankCard)
  card1 = (BankCard)acc1;
  Console.WriteLine(card1.money); 
  }
  }
  interface Ipay
  {
  bool pay(decimal price);
  }
  class Account
  {
  public decimal money;
  public void Deposit(decimal x)
  {
  money = money + x;
  }
  public bool Withdraw(decimal x)
  {
  if (money > x)
  {
  money = money - x;
  return true;
  }
  else
  return false;
  }
  }
  class BankCard:Account,Ipay
  {
  public bool pay(decimal price)
  {
  if(money>=price)
  {
  money=money-price;
  Console.WriteLine("成功购买{0}元商品",price);
  return true;
  }
  else
  {
  Console.WriteLine("金额不足");
  return false;
  }
  }
  }
}


我觉得这个程序不应该输出1000啊,麻烦大神们帮我看一下,为什么我的调试结果就出来一个1000.。。谢谢了

------解决方案--------------------
card1是个BankCard,money1000
acc1是个Account,money500
acc1不是BankCard
然后显示card1.money

楼主要啥效果