重写ToString和在C#中使用隐式/显式转换运算符有什么区别?

时间:2016-06-05 16:05:04

标签: c#

在C#中,有什么区别:

public override string ToString()
{
    return "Person: " + Name;
}

而且:

public static implicit/explicit operator string(Person person)
{
    return "Person: " + Name;
}

1 个答案:

答案 0 :(得分:4)

语义有些不同。

Conversion operators说“转换为字符串(或其他)类型”:

  

C#使程序员能够在类或结构上声明转换,以便可以将类或结构转换为和/或从其他类或结构或基本类型转换。

Object.ToString应该返回

  

表示当前对象的字符串。

意思是“给我(通常是人类)对象的可读文本表示”。

(我并不是说这种语义总是受到尊重。例如,有时您可能会看到{ QPainter painter(printer); painter.drawLine(10, 10, 200, 200); } var casper = require("casper").create(); var mouse = require("mouse").create(casper); var casper = require('casper').create({ verbose: true, //logLevel: 'debug', // debug, info, warning, error clientScripts: ["includes/jquery.min.js"], pageSettings:{ loadImages: false, loadPlugins: false, userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' } } ); var fs = require('fs'); casper.start().thenOpen("http://www.1800flowers.com/orchids/purple-mini-101006?categoryId=400065010", function(){ console.log("Access Site 1800.Com"); this.wait(10000); }); casper.then(function(){ this.capture("1800_1.png"); }); casper.then(function(){ this.evaluate(function(){ $('#zipCode').attr('value', '12345'); $('#locationCode').attr('value', 'Residence'); //document.querySelector('select[id="locationCode"]').focus(); }); this.mouse.click('#calendarLink'); this.wait(20000); this.mouse.click('#DeliveryCalendarGPTDayCharges'); this.wait(20000); //this.sendEvent('keypress', this.page.event.key.Down); }); casper.then(function(){ this.capture("1800_2.png"); console.log(this.getCurrentUrl()); }); casper.run(); 被用作转换函数。)