c# - 一种打印实例名称的方法
问题描述
我有一个班级人:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
在 Main 类中,我显示了该类的所有实例(人员)的详细信息:
List<Person> itemsToPermute = new List<Person>();
Person a = new Person { Name = "John", Age = 12 };
Person b = new Person { Name = "Clara", Age = 57 };
Person c = new Person { Name = "Martha", Age = 81 };
Person d = new Person { Name = "Leon", Age = 23 };
Person e = new Person { Name = "Rina", Age = 48 };
itemsToPermute.Add(a);
itemsToPermute.Add(b);
itemsToPermute.Add(c);
itemsToPermute.Add(d);
itemsToPermute.Add(e);
private static void Display(string prompt, List<Person> allPersons)
{
foreach (Person currentPerson in allPersons)
{
Console.WriteLine(currentPerson.ToString());
}
}
输出为: Person: John 12 Person: Clara 57 ... 等等。我还希望能够显示实例名称: Person: a John 12 有没有办法检索 a (实例名称)?这个问题的全部目的是了解 C# 中是否有办法以编程方式找出类实例的名称。先感谢您。
解决方案
我会使用 and for-loop 对所有元素进行迭代。然后你就直接得到了实例号。
例子:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return Name + " " + Age;
}
}
private static void Display(List<Person> allPerson)
{
for (int i = 0; i < allPerson.Count; i++)
{
Console.WriteLine($"Person{i} "+allPerson[i].ToString());
}
}
如果您想以 1 开头的人号,您也可以将{i}更改为{i+1}
如果您想自动检测每件事(类名和列表中的当前索引)
foreach (Person currentPerson in allPerson)
{
int currentIndex = allPerson.IndexOf(currentPerson);
Console.WriteLine($"{currentPerson.GetType().Name}: {currentPerson.GetType().Name}{currentIndex+1} {currentPerson}");
}
推荐阅读
- python - 编写 PowerShell 基准测试命令脚本
- flutter - Flutter - 在 MaterialApp 中覆盖 HeroController 可能吗?
- react-native - 反应原生渲染 foreach 循环
- python - tensowflow keras - model.predict 给出所有相同的输出
- bash - 通过 docker 无法 cd 进入现有目录的 bash 脚本
- python - 为什么 python 允许在不存在的索引处插入,但在访问时会抛出错误?
- c# - 如何将字符串转换为 char*
- amazon-web-services - 使用 IAM 角色的 KMS 密钥进行跨账户 s3 访问
- xamarin.forms - 如何使用 SKTouchEventArgs 通过点击在 Skiasharp 画布上绘图
- spring - Spring Security 在通过 html 的模型页面登录时出现错误