我的班级:
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;
}
}
主:
class Program
{
static void Main(string[] args)
{
Person sallyPerson = new Person("Sally", "Solomon",23);
}
}
假设我想改变这个人的名字和年龄,我该怎么做呢? FirstName和Age属性是私有设置的。
答案 0 :(得分:3)
您可以将属性设为公开 -
class Person
{
// changed private set; to set;
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
答案 1 :(得分:1)
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
答案 2 :(得分:1)
该类已设置为Immutable,这意味着一旦构造了此类的实例,就无法修改其属性。如果您希望能够构造此类并修改它的属性,则需要将类设置为公共属性,如下所示:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
答案 3 :(得分:1)
我希望这是一个家庭作业问题,否则@Brandon Cuff的回答是显而易见的。
或者,您可以公开设置字段的方法:
class Person
{
public void SetFirstName(string value)
{
this.FirstName = value;
}
}
答案 4 :(得分:1)
所以我才意识到,所有的答案都假设你问的问题是字面你要问的问题,而不仅仅是一个例子。但也许你只是以为例,你实际上需要设置一个你不能控制其来源的对象的私有属性?在这种情况下,我会说,这通常是一个坏主意,但如果你真的需要这样做,有一种方法。这种方式被称为"反射" (如果你真的想要的话,这只是你可以用反射做的许多种粗略的事情之一)。 This是您可能想要查看的问题,如果这实际上是您之后的问题。
但更有可能的是,如果您控制该类的来源并且想要更改它们,那么正确的响应就是没有属性是私有的。