C#属性和字段(访问修饰符)

news/2025/2/3 2:05:11 标签: c#
不同点逻辑性/灵活性存储性访问性使用范围安全性
属性(Property)源于字段,对字段的扩展,逻辑字段并不占用实际的内存可以被其他类访问对接收的数据范围做限定,外部使用增加了数据的安全性
字段(Field)不经过逻辑处理占用内存的空间及位置大部分字段不能直接被访问内存使用不安全

[适用情况]

  公共字段:

           1. 允许自由读写

           2. 取值范围只收数据类型约束而无其他任何特定限制;

           3. 值的变动不需要引发类中其它任何成员的相应变化;

         如果均满足上述条件,那么我们便可以大胆地使用公共字段;

       属性:

             1. 要求字段只能读或只能写;

             2. 需要限定字段的取值范围;

             3. 在改变一个字段的值的时候希望改变对象的其它一些状态;

           如果满足上述条件中的任何一个,就应该使用属性。

namespace 字段和属性
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // C#  属性(Property) 和字段(Field)的区别

            //属性(Property)是另一种类型的类成员,定义属性的目的在于便于一些私有字段的访问.类提供给外部调用时用的可以设置或读取一个值,属性则是对字段的封装,将字段和访问自己字段的方法组合在一起,提供灵活的机制来读取、编写或计算私有字段的值。属性有自己的名称,并且包含get 访问器和set 访问器。

            //  字段(Field)是一种表示与对象或类关联的变量的成员,字段声明用于引入一个或多个给定类型的字段。字段是类内部用的,private类型的变量(字段),通常字段写法都是加个"_"符号,然后声明只读属性,字段用来储存数据。

            //声明格式:
            // 属性修饰符  类型  属性名{ get  {  //get访问器代码  }   set{  //set  访问器代码}  }

            //总结:
            //1.字段和属性都是成员变量
            //2.字段以小驼峰命名,属性以大驼峰命名
            //3.字段是私有的,属性是公共的
            //4.字段可以存储数据,属性不能
         }

    }
    class People
    {
        //类拥有成员变量和成员方法
        //成员变量就是字段,用来存储对象的信息
        public string App { get; set; }
        private int age;
        //类的成员可以通过设置访问修饰符限制可访问性
        //比如: name出现无字  age出现负数

        //为了保证对象的数据不被随意更改,我们通常会使用属性来定义公开成员变量(使用大驼峰),使用字段定义私有的成员变量(使用小驼峰)
        public int Age
        {
            get
            {
                Console.WriteLine("get执行了");
                return age;
            }
            set
            {
                if (value > 0 && value <= 20)
                {
                    age = value;
                }
                else
                {
                    throw new Exception("年龄不符合");
                }
            }
        }
    }
}
  * 访问修饰符:指定了一个类,以及这个类的成员的课访问性,通过这个标识,控制这个类,以及这个类的某个成员的可访问性
  * 
  * public: 公共的  所有的地方都可以访问
  * private:私有的  类内部可以访问
  * internal: 只能在当前项目访问
  * 
  * protected:只能由该类以及子类可以访问
  * proteceed internal :  能在当前类  子类  实例中访问,在别的项目(引用了这个项目)中,可以在子类中访问,实例不能访问


http://www.niftyadmin.cn/n/5840423.html

相关文章

C++ strcpy和strcat讲解

目录 一. strcpy 代码演示&#xff1a; 二.strcat 代码演示&#xff1a; 一. strcpy 使⽤字符数组可以存放字符串&#xff0c;但是字符数组能否直接赋值呢&#xff1f; ⽐如&#xff1a; char arr1[] "abcdef"; char arr2[20] {0}; arr2 arr1;//这样这节赋值可…

89,[5]攻防世界 web Web_php_include

进入靶场 <?php // 显示当前 PHP 文件的源代码&#xff0c;方便调试或展示代码内容 show_source(__FILE__);// 从 URL 的查询字符串中获取名为 hello 的参数值&#xff0c;并将其输出到页面上 // 例如&#xff0c;当访问的 URL 为 "example.php?helloworld" 时&…

MATLAB中savefig函数用法

目录 语法 说明 示例 将当前图窗保存到 FIG 文件 将多个图窗保存到 FIG 文件 使用 compact 选项保存图窗 savefig函数的功能是将图窗和内容保存到 FIG 文件。 语法 savefig(filename) savefig(H,filename) savefig(H,filename,compact) 说明 savefig(filename) 将当前…

Unity3D仿星露谷物语开发26之创建场景控制管理器

1、目标 创建场景控制管理器&#xff0c;来加载和卸载场景&#xff0c;以实现场景之间的切换。 2、思路 Fade To Back是黑色的过渡场景&#xff0c;透明度逐渐变为1。 Fade To Transparent To Show Scene&#xff1a;黑色消失的过渡场景&#xff0c;透明度逐渐变为0. 事件触发…

Java小白入门教程:Object

目录 一、定义 二、作用 三、使用场景 四、语法以及示例 1、创建Object类型的对象 2、使用 toString()方法 3、使用 equals()方法 4、使用 hashCode()方法 5、使用 getClass()方法 6、使用 clone()方法 7、使用 finalize()方法 一、定义 在Java中&#xff0c; object…

No.7十六届蓝桥杯备战|单目操作符|getchar|putchar(C++)

单⽬操作符 前⾯介绍的操作符都是双⽬操作符&#xff0c;即有2个操作数。除此之外还有⼀些操作符只有⼀个操作数&#xff0c;被称为单⽬操作符。如 、–、(正)、-(负) 就是单⽬操作符。 和– 是⼀种⾃增的操作符&#xff0c;⼜分为前置和后置&#xff0c;–是⼀种⾃减的操作…

手撕Vision Transformer -- Day1 -- 基础原理

手撕Vision Transformer – Day1 – 基础原理 目录 手撕Vision Transformer -- Day1 -- 基础原理Vision Transformer (ViT) 模型原理1. Vit 网络结构图2. 背景3. 模型架构3.1 图像切块&#xff08;Patch Embedding&#xff09;3.2 添加位置编码&#xff08;Positional Encoding…

【LeetCode 刷题】回溯算法-组合问题

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为回溯算法组合问题相关的题目解析。 文章目录 77. 组合216.组合总和III17.电话号码的字母组合39. 组合总和40. 组合总和 II 77. 组合 题目链接 class Solution:def combinationSum3(self, k: int, n: int) …