c# - C# 中与 DateTime 对象的字符串连接 : why is my code legal?

标签 c# concatenation

在我正在编写的一些 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/

相关文章:

c# - TraceSource.TraceTransfer 与 TraceSource.TraceEvent(TraceEventType.Transfer

mysql - 使用 mysql concat 并使用 like 搜索该字段,这行得通吗?

mysql - 在 MySQL 中使用带有变量的 concat() 函数

MYSQL 连接不工作

python - 如何加入两个 Pandas 数据框中的单元格值?

python - 如何连接预训练的嵌入层和输入层

c# - 当右侧是 Object 类型时如何处理运算符 == 重载

c# - 如何删除字符串中的任何 utf8mb4 字符

c# - 使用 AutoMapper 映射后,上下文未更新加载的实体

c# - 在wpf中绘制垂直线