看了好多程序,属性部分很多都类似于下面的写法,大家说说这样写到底有什么好处,还有两个小问题,在下面的注释那里。using System;namespace ConsoleApplication3
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Class2 C;
C = new Class2(20);
C.Print();
Console.ReadLine(); }
} class Class2
{
private int x=10; public Class2()
{} public Class2(int xValue)
{
X=xValue;
} public int X
{
get
{
return x;//问题1、这个return x到底是返回那个的值?
} set
{
x=value;//问题2、这个value是什么?他到底是那个的值?
}
} public void Print()
{
Console.WriteLine(x);
Console.WriteLine(X);
} }
}

解决方案 »

  1.   

    private int x=10; return 这个value就是你要给她的值也是给上面的
      

  2.   

    //问题1、这个return x到底是返回那个的值?类的私有成员变量
      

  3.   

    属性其实最后被翻译成get_xxx()和set_xxx(value)方法。
    这个value就是set的一个参数。
      

  4.   

    //问题2、这个value是什么?他到底是那个的值?设置类属性的时候所给的值
      

  5.   

    1、 返回的你那个私有的变量  private int x=10
    2、 你设置的值  代码如果是 X = 20,value 就是20。这样写就是为了能够访问和设置类的私有变量x
      

  6.   

    return x;返回的是Class2的private int x=10;当你将鼠标移到"return x;"的"x"上时会有提示;
    x=value;其中value是外界赋给x的值;运行调试一下程序跟进去啥都明了了。
      

  7.   

    return x;//问题1、这个return x到底是返回那个的值?
    x当然是private int x=10;这个了, 就这一个变量叫x啊, lz应该知道C#里变量是区分大小写的吧
    x=value;//问题2、这个value是什么?他到底是那个的值?
    属性的本质实际上就是读方法和写方法
    public int X
    {
      get
      {
        return x;
      }
      set
      {
        x=value;
      }
    }
    就是public int GetX(){ return x; }和 public void SetX(int value) { x=value; }
    当有读取属性X的操作的时候就会调用GetX(), 写属性X, 如X=1, 就是调用SetX(1)
    这样解释lz明白了吗
      

  8.   

    return x;//问题1、这个return x到底是返回那个的值?
    x是当前值
    x=value;//问题2、这个value是什么?他到底是那个的值?
    value是你调这个方法时传进去的值,即你想给他的值
      

  9.   

    看了这么多,从新理解一下:
    就是对私有变量x的操作,
    有get的话,就返回x的值,但是返回给谁用啊?
    有set的话,就改变x的值??
    是不是这样啊?
      

  10.   

    你可以这样写就清楚了看到属性前面的类型没有例如"int"等,你写成,return this.x;
    和 this.x=value;就应该明白了吧对的你示例的情况只是省略了this关键字而已,这就是本类对象的的意思,this.x就是本类对象中的成员"x"OK,到此你应该清楚了吧!
      

  11.   

    建议你做做分步骤调试细心你可发现value这种东西在调用的时候发生..当然它根你的属性声明保持一致性...例如声明为int 那么 value就是int声明 string 那么 value就是string它将在使用这个对象的对象中调用赋值时发生,例如class A{
    int x
    public int X
    {
       get{return this.x;}
       set{this.x=value;}
    }
    }class B{
    A a;public void Test(){
      a.X=2;//如果执行句时,控制将通过对象a找到其属性X的set语句,并把value换成2
    }
    //重载Test方法
    public void Test(int t){
      a.x=t;//方式同上
    }
    }//end classB总而言之属性就是一层加在字段上的灵活和安全的"封装"..它就是为访问字段而存在的.
      

  12.   

    return x;//问题1、这个return x到底是返回那个的值?
    x是当前对象的私有字段xx=value;//问题2、这个value是什么?他到底是那个的值?
    value是你调这个方法时传进去的值,即你打算赋给x的值优点:不用写诸如getValue(),setValue(int)这样两个方法就能很方便地访问私有字段
      

  13.   

    看来还是没有清楚,这样吧,我用一个最简单的方法说给你听:
    public class atoa_Info
    {
    private Int32 _nodeID;

    /// <summary>
    /// nodeID
    /// </summary>
    public Int32 nodeID
    {
    get{return _nodeID;}
    set{_nodeID = value;}
    }
    当你创建一个atoa_Info的实例info时
    如果你给info.nodeID付值时:
    info.nodeID=1;
    这个时候执行set{_nodeID=value}
    如果你使用nodeID属性时:
    int id=info.nodeID;
    这个时候执行get{return _nodeID}
    至于为什么这样写,你仔细看就会发现,这个类真正用来保存nodeID的是私有变量_nodeID
    所以你可以明白这样写的好处了。