C#中属性与字段的理解

1.1属性用于描述对象的静态特征,属性本身不保存数据,他只是外界访问私有字段的一个入口,其数据类型要和字段一致,且采用Pascal命名法,即首字母大写,而字段主要用于类的内部做数据交互使用,因此绝大多数都为private;
1.2 可以再属性中的get和set访问器中添加约束代码,保障数据的有效性;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace initClassTest
{
    class Student
    {
        public Student()
        {

        }
        //定义私有字段
        private string studentName = "";
        private int studentAge = 0;
        private int studentId = 0;
        //通过属性的访问器访问和修改私有字段并对数据进行约束
        public int StudentAge
        {
            get { return studentAge; }
            set
            {
                if (studentAge <= 18)
                    studentAge = 18;
                else
                    studentAge = value;
            }
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace initClassTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.StudentAge = -20;
            Console.WriteLine(student.StudentAge);
            Console.ReadKey();
        }
    }
}

1.3 属性也可以单独存在,此时属性中可以在访问器中执行一些方法,比如在数据中需要保存一个人的年龄,由于年龄是不断变化的,所以我们可以考虑直接在访问器中获取当前时间然后与其出生年份做差;
1.4 自动属性:系统会自动帮我们生成同名的私有字段,但注意自动属性智能用于标准格式的访问器,不能设置为只读或者只写,且不能添加如何业务逻辑;

//自动属性
public string BookId { get; set; }

//等效为如下代码
private string bookId = 0;
public string BookId
{
    get {return bookId}
    set {bookId = value}
}

1.5 .C#中当new 一个类时,首先是对这个类中的字段进行初始化,然后调用构造方法,换言之,首先为类中的字段分配内存空间,然后执行构造方法;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值