得到并设置在一个班级

时间:2013-09-21 06:47:41

标签: c# .net class oop

我有一个类testClass

public class testClass
{
    public int firstInt;
    public int SecondInt { get; set; }
}

在我的_Default页面中的一个事件中,我正在创建一个对象并尝试设置属性。

    protected void Button1_Click(object sender, EventArgs e)
    {
        testClass objtestClass = new testClass();
        objtestClass.firstInt = 1;
        objtestClass.SecondInt = 2;
    }

两者都正确设置了值。但firstInt和SecondInt表现不同。看图像。

enter image description here

为什么两者都以不同的颜色出现?

4 个答案:

答案 0 :(得分:3)

下面

public class testClass
{
public int firstInt; // a class variable/Field
public int SecondInt { get; set; } // property
}

Variables/Field: 变量直接对应于内存位置。使用单个声明语句定义变量。变量可以是局部变量,在过程内定义并且仅在该过程中可用,或者它可以是在模块,类或结构中定义但不在任何过程内的成员变量。成员变量也称为字段

Properties: 属性是在模块,类或结构上定义的数据元素。您可以在Property和End Property语句之间定义一个带有代码块的属性。代码块包含Get过程,Set过程或两者。这些过程称为属性过程或属性访问器。除了检索或存储属性的值之外,它们还可以执行自定义操作,例如更新访问计数器。

请参阅此处的Msdn链接http://msdn.microsoft.com/en-us/library/sk5e8eth.aspx以获取解释

这个问题在这里有一个很好的解释What is Difference between Property and Variable in C#

答案 1 :(得分:0)

出现 SecondInt 的方式是属性的符号。以及你的方式:

public int SecondInt { get; set; }

使它成为财产。属性易于使用(无需调用setter / getter等)。现在 SecondInt 表现为您的测试类的属性。

编辑:

通过Visual Studio中的重构,您可以自动(或手动)执行此操作:

private string m_MyProperty;
public string MyProperty 
{ 
  get { return m_MyProperty; }
  set { m_MyProperty = value; }
}

这样,您的 MyProperty 属性已创建,它为您的私有m_MyProperty字符串设置并获取值。你可以用它作为:

String x = tstobj.MyProperty;
tstobj.MyProperty = x;

答案 2 :(得分:0)

'firstInt'是类字段(变量),而'SecondInt'是.NET属性。如果需要,可以通过扩展get和set方法来封装类中的处理SecondInt。

答案 3 :(得分:0)

实际上当你写这样一个属性时:

public int second {get; set;}

调用auto属性,C#自动使用像

这样的私有变量
private int _second;

(很像你的第一个变量)

并使用您的财产,如下所示

public int second{ get{ return _second;} set{ _second = value;} }

类似java中的getSecond和setSecond方法。 所以属性就像两个单独的获取和设置方法,并且可以有一个用于存储数据的支持字段(私有变量)。用于控制对类的内部数据的访问的属性。