首页 > 其他分享 >成员属性

成员属性

时间:2024-12-20 20:41:36浏览次数:4  
标签:set Name get 成员 value public 属性

成员属性

用于保护成员变量

为成员属性的获取和赋值添加逻辑处理

解决了private public protected的局限性

属性可以让成员变量在外部只能获取不能修改或者只能修改不能获取

成员属性的基本语法

//访问修饰符 属性类型 属性名
//{
//  get{}
//  set{}
//}
class Person 
{
    private string name;
    public int money;
    public bool gender
    //属性的命名一般用帕斯卡命名法
    public string Name
    {
        get
        {
            //可以在return之前添加一些逻辑规则
            //get中意味着这个属性可以获取的内容
            return name;
        }
        set
        {
            //value用于表示外部传入的值
            name=value;
        }
    }
    public int Money//成员属性添加逻辑和保护成员变量
    {
        get
        {
            //解密
            return money-5;
        }
        set
        {
            //加密
            money=value+5;
        }
    }
    //当set和get只有一个时,一般只会有get
    public bool Gender
    {
        get
        {
            return gender;
        }
    }
}

成员属性的使用

Person p = new Person();
p.Name = "Robot";//使用Name中的set语句块
Console.WriteLine(p.Name);//使用Name中的get语句块

成员属性中getset前可以加访问修饰符

不加的话会默认使用属性申明时的访问权限

加的访问修饰符要低于属性的访问权限

不能让getset的访问权限都低于属性的权限

getset可以只有一个,只有一个时没有必要在前面加访问修饰符

自动属性

外部能得到却不能更改的特征

如果类中有一个特征是只希望外部能得到而不能更改,又没有什么特殊处理,那么就可以直接使用自动属性

public float Height
{
    //get和set中没有写逻辑的需求
    get;
    private set;
}
习题
namespace 成员属性
{
    class Student
    {
        public string Name
        {
            get; set;
        }
        public int age;
        public int score;
        //这道题甚至不用写构造函数
        public void Speak()
        {
            Console.WriteLine("我是{0},今年{1}岁了",Name,age);
        }
        public void ScoreCalc()
        {
            Console.WriteLine(score);
        }
        public int Age
        {
            get
            {
                //get是外面得到这个变量
                return age;
            }
            set
            {
                //所以要在定义的时候有判断的话要在set里面写逻辑
                if (value < 0)
                {
                    age = 0;
                }
                else if (value > 150)
                {
                    age = 150;
                }
                else
                {
                    age = value;
                }
            }
        }
        public int Score
        {
            get
            {
                return score;
            }
            set
            {
                if (value < 0)
                {
                    score = 0;
                }
                else if (value > 100)
                {
                    score = 100;
                }
                else
                {
                    score=value;
                }
            }
        }

    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Student student1 = new Student();
            student1.Name = "robot";
            student1.Age = 20;
            student1.Score = 50;
            student1.ScoreCalc();
            student1.Speak();
        }
    }
}

标签:set,Name,get,成员,value,public,属性
From: https://www.cnblogs.com/cannedmint/p/18619820

相关文章

  • 【java面向对象编程】第二弹----成员方法
    笔上得来终觉浅,绝知此事要躬行 ......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(3)
    发现之前修改源码后,虽然过滤掉对象的私有成员,但是反序列化的时候,发现生成的对象只有只有公有成员,不包括私有成员.这不是我想要的,因为没有私有成员,对象就不完整了,并且有时候还需要一些私有成员的默认值.所以,还需要再优化一下.修改unpickler.py文件的def_restor......
  • 成员方法
    成员方法(函数)用来表现对象行为申明在类语句块中,规则和函数申明规则相同成员方法不用加static关键字成员方法必须实例化对象,再通过对象来使用,相当于该对象执行了某个行为classPerson{publicstringname;publicintage;publicPersonfriendspublicvo......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(2)
    在前一篇文章中,通过修改源码来实现对象的私有成员不被序列化的功能.但是不够灵活,于是我又修改了一版,能够自定义过滤函数.实现起来不是很难,要点如下:#pickler.py的_flatten_obj_instance函数self._current_obj=obj#记录正在处理的对象returnself._flatten_dict......
  • 成员变量和访问修饰符
    成员变量申明在类语句块中用来描述对象的特征可以是任意变量类型数量不做限制是否赋值根据需求来定enumE_Gender{Male,Female,}structPosition{}classPerson//类中可以使用任何变量类型{//特征——成员变量//姓名stringname="robot"......
  • QML常用属性名称汇总
    在QML中,属性作为QML的一个核心概念,它的存在主要就是为了能轻松定义对象的特性,并通过绑定实现强大的动态行为。以下将从声明、初始化到进阶应用来演示qml属性的使用方式。属性其实是对象的特性,我们可以位属性分配静态值,也可以分配动态表达式,属性值可以被读取和修改,就相当于......
  • C# 读取xml文档并传值给公共类属性
    Publicfilepublicfile=newPublicfile();try{stringfilePath=Path.Combine("C:?",fileName);if(!File.Exists(filePath)){WriteErrorLog(......
  • 【OO ALV行、列和单元格设置颜色和可编辑属性】
    文章目录概述设置fieldcat设置layout颜色设置颜色值以列为单位以行为单位以单元格为单位可修改属性设置以表单为单位以列为单位以单元格为单位概述OOALV,是指通过面向对象(object-Oriented)的方式实现的ALV输出基本使用原理:通过界面调用,在界面的CustomerContro......
  • 说说你对text-transform属性的理解
    text-transform属性在前端开发中用于控制文本的大小写形式。通过这个属性,开发者可以轻松地实现文本的大写、小写、首字母大写等效果,而无需手动修改文本内容。具体来说,text-transform属性有以下几个常用的取值:uppercase:将文本转换为大写形式。这意味着无论原始文本的大小写如何......
  • 说说你对-webkit-touch-callout属性的理解
    -webkit-touch-callout是一个WebKit私有属性,主要用于移动端开发。以下是我对该属性的理解:功能与作用:-webkit-touch-callout属性用于控制当用户触摸并按住某个元素时,是否显示系统默认菜单。在iOS设备上,例如,当用户长按一个链接,Safari浏览器默认会显示一个与链接相关的系统菜单......