在您的应用程序中,您应该有一个 static User CurrentUser 属性。
当您登录应用程序时,将当前用户设置为该用户的实例。
如果您使用的是 WPF,我会将其设为依赖属性,并将应用程序接口的其余部分绑定到该属性。如果您使用表单,则必须在用户更改时手动处理所有 UI 的更新。
编辑:如何使用静态运行程序和对象的静态实例来实现这样的事情的简短示例。我还建议您阅读更多关于静态的含义以及类是什么的内容,它可能比您想象的要多一些...我将在底部进行更多解释
class Program
{
static Player CurrentUser;
static void Main(string[] args)
{
string username;
bool isValidUser;
//get and validate user credentials
if (isValidUser)
CurrentUser = new Player(username);
SomeMethod();
}
static void SomeMethod()
{
if (CurrentUser == null)
return;
//do stuff with user
}
}
public class Player
{
public string Name { get; private set; }
//... more properties
public Player(string name)
{
Name = name;
//... more properties
}
}
考虑一下静态与非静态......非静态类是您可以构造并拥有多个实例的对象的蓝图。当类中有静态成员时,就会创建一个静态类。每当您引用其中一个静态成员时,所有静态成员都被分离出来,并且在整个程序中声明和引用该静态类的单个实例......我所说的一个更好的例子是......
class Program
{
static Person John;
static void Main()
{
Console.WriteLine("Persons who exist {0}", Person.Total);
John = new Person("John");
John.Born();
John.Birthday();
Person Jane = new Person("Jane");
Jane.Born();
Console.WriteLine("Persons who exist {0}", Person.Total);
Console.WriteLine("John's Age {0}", John.Age);
Console.WriteLine("Jane's Age {0}", Jane.Age);
Console.ReadKey(true); //Pause program
}
}
class Person
{
public static int Total { get; private set; }
public static Person()
{
Total = 0;
}
public string Name {get; private set;}
public int Age { get; private set; }
public Person(string name)
{
Name = name;
Age = 0;
}
public void Born()
{
Total++;
}
public void Birthday()
{
Age++;
}
public void Death()
{
Total--;
}
}
正如您在上面看到的,我有一个可以访问 John Person 的静态 main 方法。 Person 类是非静态的,但它确实有一个静态成员。请注意, Person 的实例在内部可以访问静态变量,但是从 main 方法中您必须说 Person.Total 才能获得总数。另请注意,Person 类的静态部分无法访问 Person 的任何实例,但 Person 的所有实例都可以访问 Person 的静态成员,这就是当一个人是出生,或在一个人死后迭代。