| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:一个C#基础问题 请高手指教 谢谢
只看楼主 加入收藏
wangbo1204
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-23
收藏
 问题点数:0 回复次数:4 
一个C#基础问题 请高手指教 谢谢
程序1
using   System;
using   System.Collections.Generic;
using   System.Text;

namespace   操作符重载2
{
        class   Complex
        {
                double   r,   v;     //r+   v   i   
                public   Complex(double   r,   double   v)
                {
                        this.r   =   r;
                        this.v   =   v;
                }
                public   static   Complex   operator   +(Complex   a,   Complex   b)
                {
                        return   new   Complex(a.r   +   b.r,   a.v   +   b.v);
                }
                public   static   Complex   operator   -(Complex   a)
                {
                        return   new   Complex(-a.r,   -a.v);
                }
                public   static   Complex   operator   ++(Complex   a)
                {
                        double   r   =   a.r   +   1;
                        double   v   =   a.v   +   1;
                        return   new   Complex(r,   v);
                }
                public   void   Print()
                {
                        Console.Write(r   +   "   +   "   +   v   +   "i");
                }
        }
        class   Test
        {
                public   static   void   Main()
                {
                        Complex   a   =   new   Complex(3,   4);
                        Complex   b   =   new   Complex(5,   6);

                        Complex   c   =   -a;
               
                        c.Print();
                        Complex   d   =   a   +   b;
                        d.Print();

                        a.Print();
                        Complex   e   =   a++;
                        a.Print();
                        e.Print();
                        Complex   f   =   ++a;
                        a.Print();
                        f.Print();

                }
        }   

}
程序2;
using   System;   
class   Player   
{   
  public   int   neili;   
  public   int   tili;   
  public   int   jingyan;   
  public   int   neili_r;   
  public   int   tili_r;   
  public   Player()   
  {   
      neili=10;   
      tili=50;   
      jingyan=0;   
      neli_r=50;   
      tili_r=50;   
  }   
  public   static   Player   operator   ++(Player   p){   
      p.neili=p.neili+50;   
      p.tili=p.tili+100;   
      p.neili_r=p.neili;   
      p.tili_r=p.tili;   
      return   p;   
  }   
  public   void   Show()   
  {   
    Console.WriteLine("Tili:{0}",tili);   
    Console.WriteLine("Neili:{0}",neili);   
    Console.WriteLine("Tili_full:{0}",tili_r);   
    Console.WriteLine("Neili_full:{0}",neili_r);   
  }   
}   
class   Test   
{   
  public   static   void   Main(){   
        Player   man=new   Player();   
        man.Show();   
        man++;   
        Console.WriteLine("Now   upgrading...:");   
        man.Show();   
  }   
}   
问:程序1中   Complex   c   =   -a;
                      c.print();     
        程序2中   man++;
        为什么1中要用实例c,而2中却可以不用呢 2可直接用man实例引用
搜索更多相关主题的帖子: 基础 指教 
2007-12-01 14:13
fyj_tian
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-11-24
收藏
得分:0 
程序1中-a返回的是托管堆中一个新的实例,需要一个引用变量来维持,
程序2中man++返回的仍是原来的对象,不需要创建新的引用。

说错的地方请指正
2007-12-01 15:25
wangbo1204
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-23
收藏
得分:0 
有道理
2007-12-01 16:05
wangbo1204
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-23
收藏
得分:0 
回复 2# 的帖子
但这是实例啊 怎么说到应用变量了呢
2007-12-01 16:22
卜卜
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2007-7-22
收藏
得分:0 
建议楼主以后把命名空间改成英文的,或者拼音的也行

为梦想而努力,相信······ ~.~
2007-12-01 18:34
快速回复:一个C#基础问题 请高手指教 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022132 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved