关于C#类中重写ToString方法和PHP类中__tostring()方法的比较

4 篇文章 0 订阅

今天在复习C#的时候遇到在类中override(重写)ToString()方法的情况,这其实是一个比较好用的办法,我们不用调用任何方法,就可以直接访问到我类中的我设定的面向大众的一些类信息。代码如下:

//定义一个动物类
public class CAnimal
    {
        public int age;
        public double weight;
        public bool sex;
        //构造函数
        public CAnimal(int age, double weight, bool sex)
        {
            this.age = age;
            this.weight = weight;
            this.sex = sex;
        }
        public void Eat()
        {
            Console.WriteLine("Animal eat");
        }
        public void Sleep()
        {
            Console.WriteLine("Animal sleep");
        }
        //在这里覆写了C#中原有的ToString()方法,设定了自己需要的返回格式
        public override string ToString()
        {
            return String.Format("Animal age:{0},weight:{1},sex:{2}",this.age,this.weight,this.sex);
        }
    }
//然后在主程序里面调用
 CAnimal al = new CAnimal(10,20,true);
 Console.WriteLine(al);
 Console.ReadLine();

 //输出结果:Animal age:10,weight:20,sex:true

我直接把CAnimal类的实例传给WriteLine(),返回的结果是我在CAnimal类中ToString()方法里组装的字符串!这也就验证了前面所说,不用调用任何方法,就可以把我们想要让大家看到的东西返回来了。

当我看到这个功能的时候,我就想起PHP中面向对象中的__tostring()方法,它的作用与在C#类中重写ToString()方法功能一样!废话不多说,直接上代码:

//定义一个动物类
class CAnimal{
    public $age;
    public $weight;
    public $sex;
    //构造函数
    function __construct($age,$weight,$sex){
        $this->age = $age;
        $this->weight = $weight;
        $this->sex = $sex;
    }
    public function Eat(){
        echo "Animal eat";
    }
    public function Sleep(){
        echo "Animal sleep";
    }
    //这里跟C#中重写ToString()方法是不是很相似?
    public function __tostring(){
        $str = "Animal age:{$this->age},weight:{$this->weight},sex:{$this->sex}";
        return $str;
    }
}
$al = new CAnimal(10,20,true);
echo $al;

//返回结果是:Animal age:10,weight:20,sex:1

由此也可以看到,不同语言的思想是差不多的,曾经看过一篇文章,一个几十年的程序员,会多达三十多种语言!!他说,语言之间总是有很大的关联的,只要你把一门语言完全弄懂了,你只需要五天,就能轻松地掌握一门新语言!

纯属个人感想,如有错误,请多多指教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值