关于C#类中重写ToString方法和PHP类中__tostring()方法的比较,
分享于 点击 34892 次 点评:246
关于C#类中重写ToString方法和PHP类中__tostring()方法的比较,
今天在复习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
由此也可以看到,不同语言的思想是差不多的,曾经看过一篇文章,一个几十年的程序员,会多达三十多种语言!!他说,语言之间总是有很大的关联的,只要你把一门语言完全弄懂了,你只需要五天,就能轻松地掌握一门新语言!
纯属个人感想,如有错误,请多多指教!
相关文章
- 暂无相关文章
用户点评