首页 > 编程语言 >【C#】【语法】类的成员变量(字段)和属性

【C#】【语法】类的成员变量(字段)和属性

时间:2024-08-16 15:40:31浏览次数:12  
标签:set string get C# 语法 访问 public 属性

1. 成员变量(字段)

  • 定义:成员变量(通常简称为字段)是类中直接声明的数据成员,用于存储对象的状态。
  • 访问修饰符:字段可以用访问修饰符(如publicprivateprotected等)来控制其访问级别,但通常将字段声明为private,以遵循封装的原则。
  • 语法:字段的声明通常是直接的,没有任何附加的逻辑。
  • 示例
public class Person
{
    // 这是一个字段
    private string name;
}
  • 特点:
    • 字段是直接存储数据的容器。
    • 字段通常在类内部直接使用。
    • 没有内置的逻辑来控制对字段的访问或修改。

 

 

2. 属性

  • 定义:属性是对类中数据的封装,提供了通过getset访问器来读取和写入类成员数据的机制。属性本质上是字段的高级形式,它允许你在访问字段时执行额外的逻辑。
  • 访问修饰符:属性的访问级别可以通过getset访问器分别控制。
  • 语法:属性通过getset访问器来实现访问控制。
  • 示例
public class Person
{
    private string name;

    // 属性带有自定义的 get 和 set 逻辑
    public string Name
    {
        get { return name; }
        set 
        {
            if (!string.IsNullOrEmpty(value))
            {
                name = value;
            }
        }
    }
}
  • 特点
    • 属性可以封装字段,允许开发者隐藏实现细节。提供一个易于使用的接口(getset),并允许在读取或写入时执行额外的逻辑(写在get和set里),例如数据验证或格式化、事件触发等。
    • 访问控制:可以对 get 和 set 访问器分别应用不同的访问修饰符,允许精细的访问控制。属性可以定义为只读(只有get),只写(只有set),或读写(同时有getset)。
    • 自动属性(如public string Name { get; set; })提供了一种简洁的方式声明属性,而不必显式声明字段。
  • 关于set和get:
    • 在任何地方给属性赋值时,就会调用其set方法;在任何地方读取属性的值时,就会调用get方法。

 

3. 总结

  • 字段是类中直接用于存储数据的成员,一般是private的,不提供直接的访问方式。
  • 属性则提供了一种受控的方式访问字段,可以添加额外的逻辑,如验证、通知、或其他业务规则。
  • 使用字段通常是简单、快速的,但可能会违反封装原则;而使用属性则可以更好地封装类的数据,并符合面向对象的编程理念。

 

标签:set,string,get,C#,语法,访问,public,属性
From: https://www.cnblogs.com/ban-boi-making-dinner/p/18362960

相关文章

  • C:一个字符数组里面解析出多个字符串
    一个字符数组里面存放了多个字符串,每个字符串以‘\0’。要求把这些有效字符串筛选出来并输出。 扩展:'\0\0'表示字符串结束。V2方法就是实现的这个扩展功能。 #include<stdio.h>#include<string.h>#include<malloc.h>voidprintSzNameList(charszNameList[],in......
  • H7-TOOL新版固件2.26发布,增加20多款新系列芯片脱机烧录支持,CAN UDS解析,升级CAN助手,串
    H7-TOOL详细介绍(含操作手册):http://www.armbbs.cn/forum.php?mod=viewthread&tid=89934【PC软件】V2.261.PC软件取消自动检查版本,替换为手动按钮检查更新2.CAN助手  -支持时钟选择(20M40M80M),CANFD支持最高8M波特率(需支持8M的canPHY芯片)  -增加“J1939通用解......
  • 解锁CADMATIC许可证的奥秘
    解锁CADMATIC许可证的奥秘:选择最适合您的许可证类型在数字化时代,CADMATIC软件已成为工程设计和制造业领域的核心工具。为了充分发挥CADMATIC软件的功能和优势,选择合适的许可证类型至关重要。本文将为您揭示CADMATIC许可证的奥秘,帮助您选择最适合您的许可证类型,提升企业的竞争力。......
  • conda虚拟环境、base环境迁移
    前提:两台电脑都有conda环境一、安装所需依赖包。condainstall-cconda-forgeconda-pack二、环境打包如果迁移的是虚拟环境,则可以直接打包,例如打包名为env_name的虚拟环境condapack-nenv_name如果迁移的是base环境,则需要先克隆,例如将克隆出的虚拟环境取名为env_namec......
  • application.yml基础配置
    sa-token:#token名称(同时也是cookie名称)token-name:token#token有效期,单位s默认30天,-1代表永不过期#timeout:43200#token临时有效期(指定时间内无操作就视为token过期)单位:秒activity-timeout:43200#是否允许同一账号并发登录(为true时允许一起登......
  • [AGC064C] Erase and Divide Game
    link感觉题解说的都很不清晰,这里只谈个人理解。考虑操作的本质是什么,两人从低到高确定二进制下的每一位填的数,并且场上只保留对应后缀的数字,当场上没有数字时当前操作者输。设\(f[i,S]\)表示确定了前\(i\)位,填的数为\(S\),接下来先手是否能赢,那么有\(f[i,S]=\neg(f[i......
  • 【问题记录】【Apache Camel】Apache Camel 报 413Request Entity Too Large
    1 前言ApacheCamel不知道大家有没有用过。它是一个基于企业应用集成模式(EIP)的强大开源集成框架。能够快速、轻松地集成,用于在各种系统之间消费或生产数据。说白了可以用于系统之间的不同方式的交互支撑。最近出现一个问题,来记录一下。2 问题现象有客户反应说一个单子卡......
  • Codeforces Round 894 (Div. 3) D
    题目:E.KolyaandMovieTheatre题目链接:https://codeforces.com/contest/1862/problem/E思路:主要用优先队列存放大于0的元素,然后除了第一个数据后的每m个数据就可以存放到记录数组里面,最后遍历找价值最大的点击查看代码#include<bits/stdc++.h>#defineintlonglongusing......
  • 启动应用程序出现pcsvDevice.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个pcsvDevice.dll文件(挑选合适的版本文件)把......
  • 文本识别之Tesseract安装
    1.概述OCR,即OpticalCharacterRecognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。tesseract下载地址:Indexof/tesseract进入下载页面,可以看到有......