日期:2014-05-18  浏览次数:20807 次

关于属性的基本问题
C# code

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#不区分大小写啊?
为什么变量 和 属性可以用同一个名称?

------解决方案--------------------
c#区分大小写的。
你应该这样写
C# code

public int OrderID 
{ 
  get{return orderID;}
  set{orderID = value;}
}

------解决方案--------------------
我认为啊,我认为
属性相当于一个方法哈。

------解决方案--------------------
人家区分的,和C、C++一样
------解决方案--------------------
这个做的目的 怎么说了?private int orderID;这个是私有的吧,只能在内部访问他..通过 字段封装之后 我就在在外部访问他了:
Order my=new Order();
my.orderID=10; //错误
my.OrderID=10;//正确
明白了不?
------解决方案--------------------
C#是严格区分大小写的!这样写是简单属性:public int OrderID { get; set; },一般属性还是 
private int orderID;
public int OrderID 

get{return orderID;}
set{orderID = value;}
}
------解决方案--------------------
要明白为什么C#要设计属性这个概念
目的:
Cat
{public int height}
如果你这样cat.height=-1; 很不合理 但程序还是赋值了

public int height
{
get{}
set{if(value<0) 报错} 小于0就不给赋值
}

public string ShipName { get; set; } 这样只是一种简便的写法
当你要控制取赋值的时候 还是要写些东西的