private string _guid=null;
public string Guid
{
set{ _guid=value;}
get{return _guid;}
}
和public string Guid=null;
这两个变量这样写有什么区别吗?两个在引用的时候还是要对类进行对象的实例化,也许是我太肤浅了,所以请知道的告诉我一下,谢谢。

解决方案 »

  1.   

    用属性你可以在set和get中加其他逻辑。
    也可以只有set或get.
    易于扩展。
      

  2.   

    public class Date
    {
        private int month = 7;  // Backing store    public int Month
        {
            get
            {
                return month;
            }
            set
            {
                if ((value > 0) && (value < 13))
                {
                    month = value;
                }
            }
        }
    }
      

  3.   

    另外属性的可以这样写public string Guid { get; set;}
      

  4.   

    您默认了变量为7,如果传入值不为7,恒定输出为7.我的理解是对的吧?如果我传入值value在外面调用前就判断了一定在1到12之间,和这样写在计算机性能方面来说是没有区别的是吗?会不会有一个进入底层调用一个没有进入底层调用的问题呢?
      

  5.   

    这种写法默认值是null还是必须有一次设置之后才能调用呢?
      

  6.   

    您默认了变量为7,如果传入值不为7,恒定输出为7.我的理解是对的吧?如果我传入值value在外面调用前就判断了一定在1到12之间,和这样写在计算机性能方面来说是没有区别的是吗?会不会有一个进入底层调用一个没有进入底层调用的问题呢?没太明白“如果传入值不为7,恒定输出为7”。
    属性只不过是一个类中的那个私有变量_guid的封装器,通过这个封装。使编程多了一点灵活性。
    但从性能上来说,由于set和get实际上也是两个方法,所以性能肯定不如直接定义一个public变量,但估计也不会有你想的那么严重。
      

  7.   

    看到有人说了这句话“.Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。看看.net里的属性面板,你会明白”
    然后就没看懂对属性进行数据绑定这个怎么理解。
      

  8.   

    因为你还没有接触到.NET自带的数据绑定,接触到了自然就知道了。
    至于为什么不支持字段成员(其实一样都是反射),那得问微软的相关设计者。