c#设置私有(private)变量的值

标签 c# private getter-setter

我正在使用 getter/setter 属性来获取或设置变量 如果我使用公共(public)变量来设置值,我的代码工作正常,因为我正在制作我的类的数组,但我只是想知道如何设置私有(private)的值多变的 。我的代码是

public class Person
{
    //getter and setter for each variable
    private string _Name;
    public string Name
    {
        get { return _Name;}
        set { _Name= value; }
    }

    private int _Age;
    public int Age
    {
        get {return _Age;  }
        set  {  _Age= value;   }
    }  
        .... // other properties

    // Another Class 
    public void setValues (Person[] p,int i)
    {    p[i].Age= 30;
    }

但是如果我将我的设置变量更改为私有(private),如何设置变量??

    private int _Age;
    public int Age
    {
       get {return _Age;  }
       private  set  {  _Age= value;   }
    } 

最佳答案

如果将 set 方法更改为 private,则无法在类外部设置该属性的值;这就是 private 关键字的全部意义所在。如果您想避免它被公开,我会考虑使用 protectedinternal 关键字。

或者,正如 JNYRanger 所说,您可以从构造函数调用此 setter,这将允许您有效地在当前类“外部”设置该值。

例子:

public class Person 
{    
    public int Age { get; private set; }

    public Person (int age) 
    {
        Age = age;
    }
}

关于c#设置私有(private)变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724566/

相关文章:

c# - 工具包图表旋转标签 X 轴

c# - 使用委托(delegate)的新实例注销事件

java - 私有(private)接口(interface)方法,示例用例?

ios - 有没有办法只为Appstore审阅者打开url?

php - Doctrine 2 访问属性的推荐方式是什么?

php - 此方法是 getter/setter 还是两者都不是

swift - a 如何在结构中使用 setter 的值进行操作?

c# - FolderBrowserDialog 的替代品

javascript - 子类可以覆盖从父类(super class)继承的私有(private)字段吗?

C# 到 VB 的转换问题