【发布时间】:2018-02-08 16:18:26
【问题描述】:
我们在课堂上检查了结构,我们的任务是在结构内创建一个方法,该方法可以改变一个实例的字段与另一个实例的字段。例如,如果另一个人是经理,则更改一个人的名字。
struct Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get => FirstName + LastName;
}
public int Age { get; set; }
public string Role { get; set; }
public double Salary { get; set; }
public bool IsManager { get; set; }
public static void EditInfo(ref Employee e1, ref Employee e2)
{
if (e1.IsManager)
{
Console.WriteLine($"Feel free to set {e2.FirstName}'s info: ");
e2.FirstName = Console.ReadLine();
e2.LastName = Console.ReadLine();
Console.WriteLine($"From now on thy name is {e2.FullName}!");
}
else if (e2.IsManager)
{
Console.WriteLine($"Feel free to set {e1.FirstName}'s info: ");
e1.FirstName = Console.ReadLine();
e1.LastName = Console.ReadLine();
Console.WriteLine($"From now on thy name is {e1.FullName}!");
}
}
}
现在,我有一种直觉,我的创作很糟糕。我完全不确定如何实际处理这个问题,对于实际的业务应用程序来说,这似乎是一个有价值的教训。我将不胜感激所有必要的技巧和窍门,以使这些与结构的多个实例交互的方法更好。
【问题讨论】:
-
“对于真正的业务应用来说,这似乎是一堂很有价值的课”——不,您几乎应该永远从使用可变结构开始。看起来你的代码满足了分配,但在几乎所有现实生活中,结构都应该是不可变的。
-
@JonSkeet 我相信这个任务更适合类,但我们还没有,甚至没有通过 OOP 概念,只是一个介绍。我可以欣赏编写良好的代码,而我的,就目前而言,不是。它显然不灵活,而且有点重复......
-
当你被要求编写根本上存在问题的代码时——而且任务听起来就是这样——那么我就不会太担心了。听起来你也没有得到太多关于代码应该做什么的指导......我可能会将代码更改为不对称(有一个“应该”作为经理的参数,被选中)和另一个是有条件地被改变的,但仅此而已。
-
@JonSkeet 例如,如果我想遍历所有字段并更改它们而无需编写一百行长的方法...
-
那么这几乎肯定也是一件坏事:)(你可以用反射来做,但用结构会更难......)
标签: c# struct properties multiple-instances interaction