使用字符串插值使我的字符串格式看起来更加清晰,但是如果我的数据是值类型,我必须添加 .ToString()
调用。
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
var person = new Person { Name = "Tom", Age = 10 };
var displayText = $"Name: {person.Name}, Age: {person.Age.ToString()}";
.ToString()
使格式变得更长更难看。我试图摆脱它,但 string.Format
是一个内置的静态方法,我无法注入(inject)它。你对此有什么想法吗?由于字符串插值是 string.Format
的语法糖,为什么他们在生成语法糖背后的代码时不添加 .ToString()
调用?我认为这是可行的。
最佳答案
我看不出如何避免编译器的装箱。 string.Format
的行为不是 C# 规范的一部分。您不能指望它会调用 Object.ToString()
。事实上它没有:
using System;
public static class Test {
public struct ValueType : IFormattable {
public override string ToString() => "Object.ToString";
public string ToString(string format, IFormatProvider formatProvider) => "IFormattable.ToString";
}
public static void Main() {
ValueType vt = new ValueType();
Console.WriteLine($"{vt}");
Console.WriteLine($"{vt.ToString()}");
}
}
关于c# - 字符串插值中可避免的装箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144363/