C#基础|对象属性Property基础使用,业务特性

哈喽,你好,我是雷工。

探究OOP中属性的奥秘

认识类的属性(Property)

01 属性的使用

作用:在面向对象(OOP)中主要用来封装数据。

要求:一般采用Pascal命名法(首字母要大写),数据类型和字段要一致,使用public修饰。

02 属性的定义

C#2.0时代标准属性的基本形式:

csharp 复制代码
private int courseld;//返回四有字段的值
public int Courseld
{
    get{return courseld;}//返回四有字段的值
    set{courseld=value;}//通过value给私有字段赋值
}

C#3.0时代,对标准属性做了简化(以后,标准属性,都可以按下方形式):

csharp 复制代码
public int Courseld{get;set;}

C#4.0时代,增加属性表达式(但不常用)

csharp 复制代码
private int unitPrice=4000;
public int UnitPrice{get=>unitPrice;set=>unitPrice=value;}

//C#4.0时代以后,可以直接赋值

public string Type{get;set;}="雷工笔记";

private DateTime FirstDate{get;set;}//首发时间

03 对象属性Property业务特性

在属性get和set方法中添加业务逻辑

代码示例:

csharp 复制代码
private int courseld=0;
public int Courseld
{
    get{return courseld;}
    set
    {
        if(value<0)
            courseld=0;
        else
            courseld=value;
    }
}

在get和set方法中可以添加任何我们需要的业务逻辑,从而有效避免非法数据。

04 属性样例

样例代码:

添加个Course1类,代码如下:

csharp 复制代码
 //C#2.0时代标准属性;
        private int courseId;
        public int CourseId
        {
            get { return courseId; }
            set 
            {
                if (value < 0)
                    courseId = 100;
                else
                    courseId = value;
            }
        }
        //C#3.0时代对标准属性做了简化(以后,标准属性,都可以按下方写)
        public string CourseName { get; set; }
        //C#4.0时代,增加属性表达式
        public int UnitPrice { get; set; } = 189;
        public string ShowCourseInfo()
        {
            return $"账号名称:{CourseName},账号编号:{CourseId},原创数量:{UnitPrice}";
        }
      
    }
    class TestClass1
    {
        public void Dowork1()
        {
            Course1 course = new Course1();
            course.CourseId = -100;
            course.CourseName = "雷工笔记";
            string info = course.ShowCourseInfo();
            Console.WriteLine(info);
        }
    }

Program.cs中代码为:

csharp 复制代码
 static void Main(string[] args)
        {
            TestClass1 testClass1 = new TestClass1();
            testClass1.Dowork1();
            Console.ReadLine();
        }

代码运行结果为:

05 后记

日拱一卒,每天学习一点点,不断更新自己的知识结构,只要学了就是积累,就能更好地应对未来未知的挑战。

相关推荐
xixingzhe2几秒前
秒杀库存三种缓存实现方案
数据库·redis·缓存
小小安于乱几秒前
linux中java的springboot程序获取IP地址间歇性10秒卡顿问题
java·开发语言
软件交付观察室9 分钟前
数据大屏总数与明细为什么对不上?2026项目开发排查指南
软件测试·数据库·sql·sqlite·数据可视化
倔强的石头_12 分钟前
数据集成软件怎么选 研究了一圈,我盯上了金仓KFS
数据库
正在走向自律18 分钟前
KingbaseES 列存储踩坑记:cstore_fdw 建表灌数全过程,以及数据改不动怎么办
数据库·国产数据库·kingbasees·金仓数据库·列存储
我科绝伦(Huanhuan Zhou)21 分钟前
Oracle 体系结构深度解析:从内存、进程到日志与事务一致性的全链路技术详解
数据库·oracle
一木 之林22 分钟前
LangChain 第8章 记忆系统:短期/长期记忆与 PostgreSQL 持久化
数据库·postgresql·langchain
qq_4523962324 分钟前
第七篇:《向量数据库选型:从 Chroma 到 Milvus 的落地对比》
数据库·milvus
云絮.25 分钟前
mybatis(二)
java·数据库·mybatis
西凉的悲伤26 分钟前
Guava-Retrying 重试框架详解
java·guava·重试框架·guava-retrying