仙ce .Format
具有String.Format(string format, params object[] args)
的簽名,您可以將您的結構轉換爲對象數組。
struct Kid
{
public string name;
public int age;
public object[] ToObjectArray()
{
return new object[] {
name, age };
}
public static implicit operator object[](Kid kid)
{
return kid.ToObjectArray();
}
};
class Program
{
static void Main(string[] args)
{
Kid kid=new Kid() { name="alice", age=2 };
Console.WriteLine("Her name is {0} and she's {1} years old", kid);
// Same as
// Console.WriteLine(string.Format("Her name is {0} and she's {1} years old", kid));
}
}
你也可以利用協方差和隱式轉換string[]
爲object[]
與
public string[] ToStringArray()
{
return new string[] {
name, age.ToString() };
}
public static implicit operator object[](Kid kid)
{
return kid.ToStringArray();
}
,而不是ToObjectArray()
號{0}和{1}都是你不能從一個對象「孩子」獲得兩個不同的屬性。 – jdweng
另外,對於Console.WriteLine,您不需要使用string.Format,因爲WriteLine方法執行相同的操作並以相同的方式接受參數。 – mbrdev
理論上,人們可以在結構體和類中創建一個索引器(如果我沒有記錯的話),然後也許它應該等價於一個字符串數組...現在我沒有一個編譯器來驗證這個答案 –