0
点赞
收藏
分享

微信扫一扫

C#属性的特点较为重要

唯米天空 2022-03-30 阅读 53

在定义类的成员过程中会定义成员的类型如下

访问修饰符

说  明

public

所属类的成员以及非所属类的成员都可以访问

private

只有所属类的成员才能访问(默认的访问修饰符)

protected

所属类或派生自所属类的成员可以访问

internal

当前程序集可以访问

internal protected

当前程序集或所属类的派生类可以访问

那么这个时候你所定义的成员是五种类型中的一种,当定义为public时,说明所有都可以对这个类中的此成员对其进行访问,那么就容易出现危险,这时就要将类成员类型改为private形,这是如何对其成员进行访问呢?

利用属性,在c#类中属性是可以对其类私有成员对其进行读取和设置的,利用的是get访问器和set访问器如下

 C#中属性采用如下方式进行声明:
         [属性修饰符] 属性的类型 属性名称
         { 
             set{}
             get{}
          }

属性的优点是在于它有良好的封装性。属性不允许外部程序直接访问类的成员,而是通过属性中的访问器对其进行访问(利用get和set对属性的成员的值进行读写)。


/*习题:在User类中添加两个私有的成员变量,用来表示生日和年龄,并设计相应的属性完成对其的访问,要求生日是只写属性,并能判断出如果用户输入的生日年份小于1900年,或当前年龄小于3岁,给出输入错误提示信息,年龄是只读属性。设计一个测试类来对User类进行使用。*/
//代码为:
namespace ConsoleApplication1
{
        public class User
        {
                private string name;
                private string sex;
                private DateTime birthday;
                private int age;
                public string Name
                {
                          get  {  return name; }
                          set  {  name = value;  }
                }
                public string Sex
                {
                          get {    return sex;   }
                          set {
                                          if (value == "男" || value == "女")
                                                 {  sex = value;  }
                                          else
                                                 {  Console.WriteLine("输入不合理!");   }    }
                }
                public DateTime Birthday
                {
                          set   {
                                         if (value.Year <= 1900 || DateTime.Now.Year - value.Year <= 3)
                                                  {  Console.WriteLine("用户输入不合理!");   }
                                         else
                                                  {   birthday = value;       }   }

                 }
        }
               public int Age
               {
                           get {
                                           age = DateTime.Now.Year - birthday.Year;
                                            return age;  }
               }
       }    
       class Program
       {
               static void Main(string[] args)
                {
                           User zs = new User();
                           zs.Name = "张三";
                           zs.Sex = "男";
                          zs.Birthday = Convert.ToDateTime("1990-2-1");
                          Console.WriteLine("姓名:" + zs.Name + "\n性别:" + zs.Sex+"\n年龄:
                          “+zs.Age);
                         Console.ReadLine();
                }
        }
}

属性的使用原则:属性和变量都可以用来表示事物的状态,但属性可以实现只写或只读并且可以对用户指定的值进行有效性检查,从而保证只有正确的状态才会得到设置,而变量不能

  属性,从外部(类的使用者)来看,类似于类的成员变量。从内部(类的作者)来看,类似于类的方法。

举报

相关推荐

0 条评论