• 2.C#面向对象基础属性


    属性:

    1.一般属性开头字母大写,字段开头字母小写。

    2.通过public来赋值的方法无法判断赋值是否非法!

    3.无论赋值如何,取值如果就是不采用赋值的结果,那么无论赋值什么都不管用。

    4.经典错误之死循环。

    5.只读属性。

    6..net3.0以上支持简写代码

    例一:

    通过public来赋值的方法无法判断赋值是否非法!

    验证代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace stduy2 { class Program { static void Main(string[] args) { Person p = new Person(); p.Age = 22;//赋值 Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值结果22 p.Age = -100; Console.WriteLine("所以星云修改后的年龄:Age={0} ", p.Age);//取值结果22 p.Age1 = -100;//这种赋值方法,无法判断合法值 Console.WriteLine("通过public来赋值的方法无法判断赋值是否非法! 所以星云新的年龄为错误值:Age1={0},", p.Age1);//取值结果-100 Console.ReadKey(); } } class Person { private int age; public int Age1; public int Age { set //赋值 { if (value< 0) { Console.WriteLine(" 警告:年龄修改失败,年龄将保持不变,失败原因:年龄不能为负数!"); } else this.age = value; } get //取值 { return this.age; } } } }

    运行截图:

    例二:

    无论赋值如何,取值如果就是不采用赋值的结果,那么无论赋值什么都不管用。

    代码验证如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace stduy2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person p = new Person();
    
                p.Age = 22;//赋值
                Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值返回值520
                p.Age = -100;
                Console.WriteLine("所以星云修改后的年龄:Age={0}
    ", p.Age);//取值,返回值为520
                p.Age = 22;
                p.Age = p.Age + 1;
                Console.WriteLine("
    计算后星云年龄为p.Age={0}",p.Age);//取值,所以返回值是520
                Console.ReadKey();
            }
        }
        class Person 
        {
            private int age;
            public int Age1;
            public int Age 
            {
                set //赋值
                {
                    if (value< 0)
                    {
                        Console.WriteLine("
    警告:年龄修改失败,年龄将保持不变,失败原因:年龄不能为负数!");
                    }
                    else
                        this.age = value;
                }
                get //取值
                {
                    return 520;               
                }
            }
        }
    }

    程序运行截图:

    例三:经典错误之死循环:

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace stduy2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person p = new Person();
    
                p.Age = 22;//赋值
                Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值死循环
                Console.ReadKey();
            }
        }
        class Person 
        {
            private int age;
            public int Age 
            {
                set //赋值
                {
                        this.Age = value;
                }
                get //取值
                {
                    return this.Age;
                    
                }
            }
        }
    }

     例四:只读属性:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Person
    {
        class Program
        {
            static void Main(string[] args)
            {
                person p = new person();
                p.IncAge();
                Console.WriteLine("年龄:{0}", p.Age);
                p.IncAge();
                Console.WriteLine("年龄:{0}",p.Age);
                Console.ReadKey();
            }
        }
    
        class person 
        {
            private int age;
            public int Age  //只读属性
            {
                get { return age; }
    
            }
            public void IncAge()
            {
                age++;
            }
        }
    }

    运行截图:

    例五:.net3.0以上支持简写代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Person
    {
        class Program
        {
            static void Main(string[] args)
            {
                person p = new person();
                p.Age = 22;
                Console.WriteLine("星云年龄:{0}", p.Age);
                Console.ReadKey();
            }
        }
    
        class person 
        {
    
            public int Age  
            {
                set;//编译器自动帮我们生成私有字段和set、get代码块。
                get;
    
            }
            public String Name
            {
                set;
                get;
            }
        }
    }

    运行截图:

  • 相关阅读:
    sourceInsight4 破解笔记(完美破解)
    notepad++ 查找引用(Find Reference)(适用于c c++及各类脚本比如lua、python等)
    notepad++ 插件推荐——快速定位文件
    WebRTC开源项目一览之二
    编译最新版webrtc源码和编译好的整个项目10多个G【分享】
    Neo4j中实现自定义中文全文索引
    NEO4J -模糊查询
    neo4j数据库迁移---------Neo4j数据库导入导出的方法
    使用neo4j图数据库的import工具导入数据 -方法和注意事项
    neo4j采坑记
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/3885758.html
Copyright © 2020-2023  润新知