【c# 学习笔记】c#中的类

1.什么是类:

  在c#中类是一种数据结构,它可以包括数据成员、函数成员(方法、属性、事件、索引器、索引符、实例构造函数、静态构造函数和析构函数、及嵌套类型)。

  属性是,类中字段和方法的结合体,通过定义属性,调用该类的时候,可以直接对该类的属性进行读写操作。

  属性的定义通过get和set关键字来实现,get关键字用来定义读取该属性时的操作,而set关键字用来定义设置该关键字的操作。

  如果一个属性同时具备了get和set操作,则该属性为读写性质的属性;如果只有get操作,则为只读属性,若只有set操作,则为只写属性。

2.类的定义: 

class Person
{
  //类成员定义
}

  默认情况下,如果class关键字前没有显式地指定访问修饰符,则类的访问修饰符为internal,表示仅在当前项目内可被访问。

  下表为类定义中可以使用的访问修饰符:

  ----------------------------------------------------------------------------------------------------------------------------------------------

          修 饰 符                访 问 权 限

  ----------------------------------------------------------------------------------------------------------------------------------------------

      无或为internal                只能在同一程序集中访问类

        public                  同一程序集或引用该程序集的其他程序集都可以访问类

      abstract或internal abstract           只能在同一程序集中访问类,该类不能被实例化,只能被继承

      public abstract                 同一程序集或引用该程序集的其他程序集都可以访问类,不能被实例化,只能被继承

      sealed或internal sealed             只能在同一程序集中访问类,该类不能被继承,只能被实例化

      public sealed                 同一程序集或引用该程序集的其他程序集都可以访问类,不能被继承,只能被实例化

  ----------------------------------------------------------------------------------------------------------------------------------------------

3.类的成员

  类的成员包括字段、属性、方法、和构造函数等。与类一样,也有自己的访问权限。下表为类成员修饰符访问权限。

  ----------------------------------------------------------------------------------------------------------------------------------------------

          修 饰 符                访 问 权 限

  ----------------------------------------------------------------------------------------------------------------------------------------------

          public                 同一程序集或引用该程序集的其他程序集都可访问

          private                  只有同一个类中可以访问

          protected                只有同一个类或派生类可以访问

          internal                 只有同一个程序集可以访问

          protected internal            在同一个程序集中,该类和派生类可以访问

  ----------------------------------------------------------------------------------------------------------------------------------------------

4.字段

  字段由访问修饰符、字段类型、字段名称组成,如下:

    public class Person
    {
        //姓名,类型为字符串类型
        private string name;
        //年龄,类型为int类型。
        public int age;
        //性别,类型为bool类型
        protected bool sex;
    }

  可以使用关键词readonly或const来定义字段。若使用readonly修饰,表示该字段是只读的,若使用const修饰,则表示该字段是不变的。下面的代码演示了

  二者的区别:

    public class Person
    {
        private readonly string name;

        public const int age = 18;

        protected bool sex;//包含字段
    }

   以上代码中,若使用readonly修饰字段,则不需要在定义时初始化,而是可以在构造函数中再完成初始化;但若使用const修饰字段,如果没有在定义字

  段时初始化,而是可以在构造函数中再完成初始化;但若使用const修饰字段,如果没有在定义字段时初始化,就会产生编译错误,错误信息:“常量字段

  要求提供一个值”。

  如前所述,也可以通过static关键字来声明静态字段。静态字段与实例字段的区别在于----静态字段必须通过类来访问,而实例字段则需要通过类的对象实

  例来进行访问,如下:

    public class Person
    {
        //静态字段定义,多了关键字static
        public static string name;

        //实例成员定义
        public int age;
    }

  以上代码中定义的静态字段name只能通过了吗,即Person.name的方式访问;而对于实例字段age,则通过类的实例对象访问,

  即:new Person().age的方式访问。

 5.属性

  属性是对字段的扩展,字段最后设置为private,因为这样可以防止客户端直接对字段进行篡改,从而保证了内部成员的完整性。

  为了访问类中的私有字段,c#提供了属性这种机制,用来对字段的灵活控制和访问。如下:

  

    public class Person
    {
        //私有字段定义
        private string name;


        //公有属性定义
        public string Name
        {
            //get访问器

            get
            {
                return name;
            }

            //set访问器
            set
            {
                //value是隐式参数
                name = value;
            }
        }
    }

   属性除了可以直接访问私有字段外,还可以根据需要加入更多的逻辑控制代码。例如,人的年龄一般在0-120岁之间,当代码试图将这个范围之外的数赋值

给年龄字段时,则可以在属性中添加抛出异常的代码来对错误进行处理。如下:

  

 public class Person
    {
        private int age;

        public int Age
        {
            //get访问器
            get
            {
                return age;
            }

            set
            {
                //在set访问器中添加更多的逻辑代码
                if(value <0 || value>120)
                {
                    throw (new ArgumentOutOfRangeException("AgeIntPropery", value, "年龄必须在0-120之间"));
                }

                age = value;
            }
        }

       
    }

  和静态字段类似,属性也可通过static关键字声明为静态属性。此时的静态属性属于类级别,不能通过类的实例进行访问,也不能在静态属性中使用非静

态的字段。如下:

 

    public class Person
    {
        private static string name;

        //静态属性
        public static string Name
        {
            //get访问器
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
       
    }

 6.方法

  方法由方法签名和一系列语句的代码块组成。其中,方法签名包括方法的访问级别(如public或private)、可修饰符(例如abstract关键字)、方法名称

和参数。Main方法是每个c#应用程序的入口点,在启动应用程序时,Main由公共语音运行时(CLR)负责调用。如下:

  

    public class Person
    {
        //类中定义了一个没有返回值的打印方法
        //name是用户传入的参数
        public void Print(string name)
        {
            Console.WriteLine("输入的值为: " + name);
        }
    }

 

 

  

转载于:https://www.cnblogs.com/xiaoyehack/p/9155838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值