将多个类对象添加到单个列表并从对象返回值
本文关键字:对象 列表 返回值 单个 添加 | 更新日期: 2023-09-27 18:31:05
我是初学者,已经搜索了一个简单的例子来解决我的问题,但没有成功。 我有两个类,想将类对象添加到单个列表中,然后将类中的值打印到控制台。如果以前已经回答过这个问题,我深表歉意。
class onetwo
{
}
class classOne:onetwo
{
int item1 = 10;
int item2 = 11;
}
class classTwo:onetwo
{
string item3 = "red";
string item4 = "blue";
}
class Program
{
static void Main(string[] args)
{
classOne numbers = new classOne();
classTwo colors = new classTwo();
List<onetwo> listC1 = new List<onetwo>();
listC1.Add(numbers);
listC1.Add(colors);
foreach (onetwo e in listC1)
{
Console.WriteLine(e);
}
}
}
}
//program output is
//objects_added_to_list.classOne
//objects_added_to_list.classTwo
您可以为每个类提供 ToString
方法的重载:
class classOne:onetwo
{
int item1 = 10;
int item2 = 11;
public override string ToString()
{
return string.Format("item1: {0}, item2: {1}", item1, item2);
}
}
class classTwo:onetwo
{
string item3 = "red";
string item4 = "blue";
public override string ToString()
{
return string.Format("item3: {0}, item4: {1}", item3, item4);
}
}
另一种方法是在基类中提供一个自定义方法,以通过反射生成格式化字符串:
class onetwo
{
public virtual string ToPrintableString()
{
return string.Join(", ",
this.GetType()
.GetFields()
.Select(p => p.Name + ": " + p.GetValue(this));
}
}
...
foreach (onetwo e in listC1)
{
Console.WriteLine(e.ToPrintableString());
}
请注意,此方法使用反射,因此它不是很快(这就是为什么我没有在 ToString
的覆盖中实现它),我一般不推荐它,但它适用于您的情况。