zoukankan      html  css  js  c++  java
  • C# Get Set

    C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。下面是一个典型的属性设计:

     1 using System;  
     2 class Demo
     3 {  
     4         int integer;  
     5         public int Integer   
     6         {  
     7             get {return integer;}  
     8             set {integer=value;}  
     9         }  
    10 }  
    11 class Test  
    12 {  
    13         public static void Main()  
    14     {  
    15     Demo test =new Demo();
    16     Console.Write(test .Integer);
    17     test .Integer++;
    18     Console.Write(test .Integer);
    19     }  
    20 } 

    属性提供了只读(get),只写(set),读写(get和 set)三种接口操作。对域的这三种操作,我们必须在同一个属性名下声明,而不可以将它们分离,看下面的实现:

    class Demo
    {  
        private string name;  
        public string Name
        {  
            get 
            { 
                return name;
            }  
        }  
        public string Name  
        {  
            set { name = value; } 
        }  
    }  

    上面这种分离Name属性实现的方法是错误的!我们应该像前面的例子一样将他们放在一起。值得注意的是三种属性(只读,只写,读写)被C# get set认为是同一个属性名,看下面的例子:

    class Demo
    {  
            protected int num=0;  
            public int Num  
                {  
                set 
                    {  
                    num=value;  
                    }  
                }
    }  
        class Demo: Demo
    {  
            new public int Num  
        {  
                get 
                {  
                    return num;
                }
        }
    }
            class Test
    {
            public static void Main()  
        {
            Demo Test = new Demo();
            //Test .Num= 1; //错误 !  
            ((Demo )Test ).Num = 1;
        }
    }  

     virtual, sealed, override, abstract等修饰符对属性与方法同样的行为

    abstract class A  
    {  
        int y;  
        public virtual int X  
            {  
                get 
                { return 0; }  
            }  
        public virtual int Y  
            {
                get { return y; }
                set { y = value; }
            }  
        public abstract int Z { get; set; }
    }  
    class B: A  
    {  
        int z;  
        public override int X  
            {  
                get { return base.X + 1; }
            }  
                public override int Y
            {
                    set 
                    { 
                        base.Y = value < 0? 0: value; 
                    }  
            }  
        public override int Z  
        {  
                get 
                { 
                    return z; 
                }  
                    set
                {
                    z = value; 
                }  
        }  
    } 

    C# get set 详细 讲解

    努力在努力 QQ:2456314589 希望 对你们有所帮助
  • 相关阅读:
    linux 文件记录锁详解
    Linux fcntl函数详解
    大数相加
    信雅达面试题atoi函数实现
    linux getopt函数详解
    strcpy和memcpy的区别
    手把手写数据结构之栈操作
    手把手写数据结构之队列操作
    手把手写数据结构之双向链表操作
    ORACLE查询内存溢出
  • 原文地址:https://www.cnblogs.com/-jth/p/10632919.html
Copyright © 2011-2022 走看看