我有一个 List<object>
.我想遍历列表并以比 o.ToString()
更友好的方式打印出值如果某些对象是 bool 值或日期时间等。
你会如何构建一个我可以调用的函数,比如 MyToString(o)
并针对其实际类型返回格式正确(由我指定)的字符串?
最佳答案
您可以使用 dynamic keyword对于 .NET 4.0,因为您正在处理内置类型。否则,您将为此使用多态性。
例子:
using System;
using System.Collections.Generic;
class Test
{
static void Main()
{
List<object> stuff = new List<object> { DateTime.Now, true, 666 };
foreach (object o in stuff)
{
dynamic d = o;
Print(d);
}
}
private static void Print(DateTime d)
{
Console.WriteLine("I'm a date"); //replace with your actual implementation
}
private static void Print(bool b)
{
Console.WriteLine("I'm a bool");
}
private static void Print(int i)
{
Console.WriteLine("I'm an int");
}
}
打印出来:
I'm a date
I'm a bool
I'm an int
关于C# 在运行时打开对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149788/