---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
c#属性是什么
首先C#属性是不存储任何的实值,它是域的扩展(即我们通常说的成员变量等)
它配合C#中的域(字段)使用,使之构造一个安全的应用程序,为什么说通过属性来替代域会提高应用程序的安全呢?
原因就在于C#属性通过访问器(Accessors)用进行数据访问.所以C#的属性可以设置为只读或只写.
而字段却没有这样的功能(只可设置只读).我们都知道在程序中有时我们是不允许用户修改一些属性的,比如姓名
原则上我们是不能修改此属性.那么我们就可以通过一个属性来实现这样的功能.让它设置为只读属性.
前面我们说到属性是字段的扩展,我们都知道如果要在类外部访问字段,就要公开(Public)这个成员字段
但是如果我们真的这样做了,那这个成员字段的就可以被任意访问(包括修改,读取).那怎么办呢?
用一个属性就可以解决这个问题.
详细请查看:<a href="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>
c#属性是什么
首先C#属性是不存储任何的实值,它是域的扩展(即我们通常说的成员变量等)
它配合C#中的域(字段)使用,使之构造一个安全的应用程序,为什么说通过属性来替代域会提高应用程序的安全呢?
原因就在于C#属性通过访问器(Accessors)用进行数据访问.所以C#的属性可以设置为只读或只写.
而字段却没有这样的功能(只可设置只读).我们都知道在程序中有时我们是不允许用户修改一些属性的,比如姓名
原则上我们是不能修改此属性.那么我们就可以通过一个属性来实现这样的功能.让它设置为只读属性.
前面我们说到属性是字段的扩展,我们都知道如果要在类外部访问字段,就要公开(Public)这个成员字段
但是如果我们真的这样做了,那这个成员字段的就可以被任意访问(包括修改,读取).那怎么办呢?
用一个属性就可以解决这个问题.
C#属性是通过Get(读取)、Set(设置)来访问属性的.
一般我们用大写开头表示属性,属性跟字段的变量名一样,用大小写区分。
下面看看怎么来使用属性的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication9
{
class Program
{
public int age;
static void Main(string[] args)
{
Port shi = new Port();
shi.Age = 14;//把 14 传给Age
Console.WriteLine(shi.Age); //输出Age的值
Console.ReadKey();
}
class Port
{
private int age;
public int Age
{
set
{
age = value;//value 为传过来的值,把value 给age
}
get
{
return age;//返回 age 的值
}
}
}
}
}
从上面看出,对象 shi 是把值给 shi.Age的,没有直接给Port类中的 age,因为age被设为了私有变量,只有通过Age来间接的把值给 age,这样就能起到对age的保护。这里我们只是简单的对age传值,并没有做什么任何判断,我们只想让age拿到它想要的值,就得在 set 里面过滤掉 age 不想要得到的值,然后再给 age。外面想要age的值只能通过Age来拿到。通过上面的例子我们可以看出属性只不过是做了一个中介的角色而已,真正工作的还是字段(域),但这样做可以更面向对象 写出更安全的应用程序.
我们可以在Age里面通过 set get 来对其指定不同的属性,只在Age里有 set{} 那么这个Age就是个只写属性,Age里面只有 get{} 那么这个Age就是只读属性。
详细请查看:<a href="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>