using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace NorthwindPrjModel
{
    public class Order
    {
        private int orderID;
        private decimal freight;
        private string shipName;
        private string shipAddress;
        private string shipCity;
        private string shipCountry;        public int OrderID { get; set; }
        public decimal Freight { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress { get; set; }
        public string ShipCity { get; set; }
        public string ShipCountry { get; set; }
    }
}
上边例子中,orderID  OrderID  不是同一个值吗?  我记得c#不区分大小写啊?
为什么变量 和 属性可以用同一个名称?

解决方案 »

  1.   

    c#区分大小写的。
    你应该这样写
    public int OrderID 

      get{return orderID;}
      set{orderID = value;}
    }
      

  2.   

    c#区分大小写的。
    你应该这样写
    public int OrderID 

      get{return orderID;}
      set{orderID = value;}
    }
      

  3.   

    一个是字段,一个是属性...OederID 是字段    orderID是属性...在一般的操作中,都是通过字段对属性进行封装的 : public int OrederID
        {
          get{return orderID;}
          set{orderID=value;}
        }
      

  4.   

    这个做的目的 怎么说了?private int orderID;这个是私有的吧,只能在内部访问他..通过 字段封装之后 我就在在外部访问他了:
    Order my=new Order();
    my.orderID=10; //错误
    my.OrderID=10;//正确
    明白了不?
      

  5.   

     C#是严格区分大小写的!这样写是简单属性:public int OrderID { get; set; },一般属性还是 
    private int orderID;
    public int OrderID 

      get{return orderID;}
      set{orderID = value;}
    }
      

  6.   

    谢谢大家,用了2个月才知道,因为以前都没用属性,然后用ctrl+space智能输入,所以没有发现问题
      

  7.   

    要明白为什么C#要设计属性这个概念
    目的:
    Cat
    {public int height}
    如果你这样cat.height=-1; 很不合理 但程序还是赋值了public int height
    {
      get{}
    set{if(value<0) 报错} 小于0就不给赋值
    }public string ShipName { get; set; } 这样只是一种简便的写法
    当你要控制取赋值的时候 还是要写些东西的