C# 如何从另一个类访问一个类的实例?
我有以下代码:C# 如何从另一个类访问一个类的实例?,c#,C#,我有以下代码: public class UnitManager { public string Name { get; set; } public string Firstname { get; set; } public UnitManager(string name, string firstname) { this.Name = name; this.Firstname = firstname; } } clas
public class UnitManager
{
public string Name { get; set; }
public string Firstname { get; set; }
public UnitManager(string name, string firstname)
{
this.Name = name;
this.Firstname = firstname;
}
}
class Other
{
}
class Program
{
static void Main(string[] args)
{
var player1 = new UnitManager("p1Name", "p1FirstName");
var player2 = new UnitManager("p2Name", "p2FirstName");
}
}
因此,我在Program
类中创建了2个对象。
我想做的是从Other
类中访问这些实例,以便//执行一些操作
例如,访问玩家姓名,在其姓名中输入一个标题,然后评估玩家2并输入另一个标题
请记住,这只是一个示例,我并不是真的打算使用它,我只是想理解这个概念。我想你可以在
Other
类中编写UnitManager
属性,设置UnitManager
public class Other
{
public UnitManager manager1{ get; set; }
}
或者编写一个方法,将passUnitManager
实例作为参数
public class Other
{
public void SetTitle(UnitManager m1) {
// do your logic
}
}
我想你可能想要这样的东西:
public class UnitManager
{
public string Name { get; set; }
public string Firstname { get; set; }
public UnitManager(string name, string firstname)
{
this.Name = name;
this.Firstname = firstname;
}
}
public class Other
{
public void doSomething(UnitManager myUnit) {
//do something with each unit manager
}
}
public class Program
{
static void Main(string[] args)
{
//create an object of type UnitManager and place it into variable player1
var player1 = new UnitManager("p1Name", "p1FirstName");
//create an object of type UnitManager and place it into variable player2
var player2 = new UnitManager("p2Name", "p2FirstName");
//create an instance of the class Other
Other ot = new Other();
//call the method within the instantiated class ot (of type Other) and
//pass it the instance of the object UnitManager with a name
//of player1
result1 = ot.doSomething(player1);
result2 = ot.doSomething(player2);
}
}
谢谢大家,我终于明白了:) 下面是我如何在你的帮助下工作的:
public class UnitManager
{
public string Name { get; set; }
public string Firstname { get; set; }
public UnitManager(string name, string firstname)
{
this.Name = name;
this.Firstname = firstname;
}
}
class Other
{
public static void AddTitle(UnitManager myUnit)
{
var titlePlusFullName = ("The Legendary" + " " + myUnit.Name + " " + myUnit.Firstname);
myUnit.Name = titlePlusFullName;
}
}
class Program
{
static void Main(string[] args)
{
var player1 = new UnitManager("john", "smith");
var player2 = new UnitManager("jen", "doe");
Other oT = new Other();
Other.AddTitle(player1);
Console.WriteLine("Player 1 name: " + player1.Name);
}
}
它显示全名+标题。如果您正好有2个实例(玩家),为什么不在UnitManager
中创建它们呢
// sealed: since we have 2 instances only we don't want to
// inherit (and create) derived classes
public sealed class UnitManager
{
public string Name { get; set; }
public string Firstname { get; set; }
// private: since we have 2 intances only we don't want to expose the constructor
private UnitManager(string name, string firstname)
{
this.Name = name;
this.Firstname = firstname;
}
// Think over renaming these fields: say, Player and Computer
public static readonly UnitManager Player1 = new UnitManager("p1Name", "p1FirstName");
public static readonly UnitManager Player2 = new UnitManager("p2Name", "p2FirstName");
}
然后将它们命名为UnitManager.Player1
(UnitManager.Player2
)例如
甚至(借助静态导入):
你应该解释你的代码,让你的答案更有价值。好吧,我添加了一些注释,但看起来你得到了下面的答案。请确保给作者的答案打分,这样他们就可以因为试图帮助你而得到分数。实际上,到目前为止我还没有想到,但我喜欢你的方法,它使以这种方式操作数据变得更容易,谢谢!
class Program
{
static void Main(string[] args)
{
UnitManager.Player1.Name = "First Name";
UnitManager.Player2.Name = "Second Name";
...
}
}
using static MyNamepace.UnitManager;
...
class Other
{
public void DoSomething()
{
// We don't have now put it as UnitManager.Player1
string name1 = Player1.Name;
...
}
}