C#,是否有采用类的变量或更改所选类的方法

时间:2018-10-01 04:19:26

标签: c#

基本上,我想做的是让一个类根据其自身的值更改许多不同的类。但是,我也想更改已更改的类和正在使用类似变量的类的类。

一个理想的解决方案是称为selectedClass和actingClass的变量。哪里可以说

selectedClass = person1, actingClass = person2

然后做类似

的操作
selectedClass.health = selectedClass.health - actingClass.damage

并使其从person1类或person2类中提取或更改值。然后,可以更改person5作为actingClass和person15作为selectedClass的selectedClass和actingClass,并使其获取或设置这些不同的相应值。

我不知道如何为每个可能的人创建一个不同的脚本,而不是为每个其他可能的人创建一个不同的脚本。这将是耗时且不是非常有效的解决方案。

很抱歉,如果我忽略了一个简单的解决方案。预先感谢任何人的帮助!

2 个答案:

答案 0 :(得分:7)

您需要的是更多或更少的界面:

public interface IPerson {
   int Health {get; set;}
   int Damage {get; set;}
}

public class ActionService(){
  public IPerson SelectedClass {get;set;}
  public IPerson ActingClass {get;set;}

  public void Hit()
  {
     this.SelectedClass.Health -= this.ActingClass.Damage;
  }

}

现在您可以这样做:

public class JackieChan : IPerson {

  public int Health {get;set;} = 120;
  public int Damage {get;set;} = 20;
}

public class Terminator: IPerson {

  public int Health {get;set;} = 500;
  public int Damage {get;set;} = 25;
}

var action = new ActionService { SelectedClass = new JackieChan(), ActingClass = new Terminator() };

action.Hit();

答案 1 :(得分:3)

首先,我认为您会误认为Class和Object。参见here

因此,在这种情况下,selectedClassactingClass实际上是对对象的引用,而不是对类的引用。您应将其命名为selectedPersonactor

由于它们是对对象的引用,因此您可以执行以下操作:

var selectedPerson = person1;
var actor = person2;
... change on selectedPerson will affect on person1...

... and you can assign selectedPerson to person 5...