更改类别私有财产
本文关键字:私有财产 | 更新日期: 2023-09-27 18:11:49
我的个人类别:
class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public int Age { get; private set; }
public Person(string firstName,string LastName,int age)
{
this.FirstName = firstName;
this.LastName = LastName;
this.Age = age;
}
public override string ToString()
{
return this.FirstName + " " + this.LastName + " " + this.Age;
}
}
Main:
class Program
{
static void Main(string[] args)
{
Person sallyPerson = new Person("Sally", "Solomon",23);
}
}
比方说,我想更改这个人的名字和年龄,我该怎么做?FirstName和Age属性是私人设置的。
您可以将属性公开-
class Person
{
// changed private set; to set;
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
所以我刚刚意识到,所有的答案都假设你问的问题是,而不仅仅是一个例子。但是,也许您只是将其作为一个示例,并且您实际上需要设置一个对象的私有属性,而您不控制该对象的源?在这种情况下,我想说,这通常是一个坏主意,但如果你真的需要这样做,有一种方法。这种方式被称为"反射"(如果你真的想的话,这只是你可以用反射做的许多粗略的事情之一(。这是一个你可能想看看的问题,如果这真的是你想要的。
不过,更可能的是,如果您控制了该类的源,并且想要更改它们,那么正确的响应就是不让属性是私有的。
class Program
{
static void Main(string[] args)
{
Person sallyPerson = new Person("Sally", "Solomon",23);
sallyPerson = new Person("Newname", "Newvalue", 23);
}
}
这是一种方法,另一种方法是在Person对象中添加方法:
public void UpdateFirstName(string newName)
{
this.FirstName = newName;
}
并进行sallyPerson.UpdateFirstName("newName");
或者使属性public
具有公共set
和get
该类已设置为不可变,这意味着一旦构造了该类的实例,就不能修改其属性。如果你想构造这个类并修改它的属性,你需要让类设置属性为公共的,比如:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
我希望这是一个家庭作业问题,否则@Brandon Cuff的答案是显而易见的。
或者,您可以公开方法来设置字段:
class Person
{
public void SetFirstName(string value)
{
this.FirstName = value;
}
}