在我正在编写的一些 C# 代码中, DateTime
对象( dt
)与两个字符串连接:
string test = "This is a test " + dt + "...Why does this work?"
这不会引发编译错误并且工作正常。我的问题:为什么这是合法的?这仅特定于 DateTime
对象,或覆盖 ToString()
的任何对象方法?
最佳答案
它可以编译,因为 C# 规范声明存在具有以下签名的 +
运算符的重载:
operator + (string str, object obj)
您提供了一个字符串
和一个可隐式转换为对象
的表达式,因此该运算符且没有其他运算符与您的参数匹配,并且可以编译。
在内部,该运算符的实现将调用string.Concat
,它将使用其ToString
方法将对象转换为字符串(假设它不为空),然后连接字符串作为字符串。
关于c# - C# 中与 DateTime 对象的字符串连接 : why is my code legal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973931/