以下三种访问属性方法的有区别吗?如果有请说明什么区别?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Demo demo = new Demo();
            demo.number = 1;
            Console.WriteLine("第一种访问方式获取值:" + demo.number.ToString());
            demo.setNum(2);
            Console.WriteLine("第二种访问方式获取值:" + demo.getNum().ToString());
            demo.Number = 3;
            Console.WriteLine("第三种访问方式获取值:" + demo.Number.ToString());
        }
    }
    public class Demo
    {
        public int number = 0;
        public void setNum(int p_number)
        {
            number = p_number;
        }
        public int getNum()
        {
            return number;
        }
        public int Number
        {
            set
            {
                number = value;
            }
            get
            {
                return number;
            }
        }
    }
}

解决方案 »

  1.   

    没有区别。Number是属性
    把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量
    字段是被视为类的一部分的对象的实例,通常用于保存类数据 
    private static string name=""; 
    属性特殊的类成员 
    public class Student 

        private string name; 
        public string Name 
        { 
            get { return name; } 
            set { name = value; } 
        } 

      

  2.   


       public class Demo
       {
            private int number = 0;
            public int Number
            {
                set
                {
                    number = value;
                }
                get
                {
                    return number;
                }
            }
        }如果没区别那以上这种写法是不是有点多余?
    何不直接写成public int number;难道只能理解成代码规范性?
      

  3.   


    哦,
    那这种呢?        public void setNum(int p_number)
            {
                number = p_number;
            }
            public int getNum()
            {
                return number;
            }
      

  4.   

    什么是封装,我不想多说,呵呵。能使用属性,为什么要使用方法?
    以后就直接使用如下所写即可,
             private int number = 0;
            public int Number
            {
                set
                {
                    number = value;
                }
                get
                {
                    return number;
                }
            }
    在.NET2.0下,类内部使用字段或者属性,外部只能使用属性,隐藏了字段。正如某仁兄所说,结果一样。不过上述的写法并不见得就很好,呵呵,至少不是线程安全的,这个我就不多说是为什么了。如果你学过面向对象,或者明白面向对象,那么这个问题对你来说应该没任何意义的。
      

  5.   


    OO中的封装,字段都设置为私有,外部访问提供接口(属性,方法)
    这样,你在方法或属性中还可以对字段进行检查等操作。 属性的实质是方法(get和set方法)
      

  6.   


            protected void setNum(int p_number)
            {
                number = p_number;
            }
            public int getNum()
            {
                return number;
            }这个算不算一个区别?
      

  7.   

    呵呵,所以我们说你看下面向对象的知识啊,然后再问这个有没有区别啊?
    我还是那么说,从效果上来说,没区别啊。从实现上说,也没有,只是习惯问题。但如果是站在OO的基础上来说,就有区别了啊。至于是什么区别,自己看了OO自然就明白了啊,这个不是一句两句可以说清的事情。