C#学习笔记——属性
……
……
1;属性介绍
介绍:属性是C#独有的一个特点,通过给类添加属性,可以使得字段拥有更大的可操作性。简单来说,如果类中只有字段的话,那么可以给字段设置public或者private,而public可以使得字段在类外被读取并且被修改,而private使得字段无法在类外修改甚至无法读取,但是,如果我们有一个需求,要在类外读取但是不能修改字段的值呢?
比如说,我们在开发游戏的时候,可以读取到游戏屏幕的长和宽,但是,这个长和宽是不能被我们修改的,而这就要用到属性了。
……
……
2;属性可以对字段进行特殊处理
介绍:在字段的set和get中,可以进行一些特殊处理,使得属性拥有更加灵活的用法。比如说可以在set和get中进行加密处理,或者在输出值之前进行一个逻辑处理,都是可以的。
……
……
3;代码详解:
如下,是常见的属性的简写形式,get和set同时存在便可以在类外进行读取和修改。而如果缺少set,那么就无法在类外修改Id的值,如果缺少get,那么就无法在类外读取到Id的值。
using System;
namespace study
{
class Student
{
public int Id { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student stu=new Student();
stu.Id = 123;
Console.WriteLine(stu.Id);
}
}
}
除了这个简写形式外,我们还可以在get和set里面添加更多的逻辑,如下所示:
在如下的代码中,就展示了get和set的全貌,其中set中的value,代表的是从外面赋进来的值,也就是赋值的123。通过这个value,就可以在set中对传入的值进行操作,然后再由get返回值(注意:在set和get中都可以去写逻辑)。其中,用到了一个字段id,这个id是私有的字段,也就是Id属性处理过程中的一个媒介。(一般来说,字段第一个字母小写,而属性第一个字母大写)。
除此之外,get和set前面还可以添加访问修饰符,不过这个访问修饰符不能大于属性前面的访问修饰符,比如现在属性ID前面的修饰符是public,那么get和set前面的访问修饰符的访问权限就不能超过public,那加这个访问修饰符有什么用呢?
很有用。
比如说,不想让别人在类外修改属性的话,就可以把set的访问修饰符变为private,如果不想让别人读取的话,就可以把get的访问修饰符变为private,而默认情况下,get和set的访问修饰符和属性的访问修饰符一样。就比如下面的代码中,get和set的访问修饰符就是public。
using System;
namespace study
{
class Student
{
private int id;
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Student stu=new Student();
stu.Id = 123;
Console.WriteLine(stu.Id);
}
}
}