C#知识点-07续(构造函数再理解,静态与非静态再理解,命名空间)

构造函数

定义:对对象的初始化操作进行封装得到的方法
构造函数是一个特殊的函数:
        1、不能写返回值(void也不能写);
        2、构造函数的名称必须与类名一致;
        3、新建类中,会默认有一个无参的构造函数。如果自己新添加了一个构造函数,那么那个默认无参的构造函数会消失
创建对象时会调用构造函数,创建对象使用new关键字
Person person = new Person();
new关键字:
        使用new关键字的目的:创建对象
        使用过程:
                        1、在内存中开辟空间;2、在开辟的空间中,创建对象;3、调用对象的构造函数初始化
在创建构造函数时,可以创建多个构造函数。而通过this关键字可以使参数少的构造函数显示调用参数多的构造函数。
this关键字:

        使用this关键字的目的:代表当前类的对象
                                   好处:1、显示地调用本类的构造函数,减少大量的初始化的冗余代码
                                                2、代表当前类的对象
 

namespace 构造函数
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student(13,"张三");
        }

    }
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public char Gender { get; set; }
        public int Math { get; set; }
        public Student(int id, string name, int age, char gender, int math)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
            this.Math = math;
        }
        public Student(int id ,string  name):this(id,name,0,'1',0)//使用this关键字来调用本类构造函数,避免了初始化id,name的代码。程序运行时,会先执行this构造函数里的代码,在执行本构造函数里的代码
        {
        }
    }
}

初始化对象的三种方式:

1、依次地给对象的每个属性赋值
 

namespace 构造函数
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.Name = "张三";
            student.Id = 1;
            student.Age = 30;
            student.Gender = '男';
            student.Math = 80;
        }

    }
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public char Gender { get; set; }
        public int Math { get; set; }
    }
}

2、构造函数
3、对象初始化器

static void Main(string[] args)
        {
            Student student = new Student() { Id = 1, Name = "张三", Age = 30, Gender = '男', Math = 100 };
        }

静态与非静态

1、被static标记的成员,称之为静态成员
2、没有被static标记的成员,称之为实例(对象)成员或者非静态成员
3、实例成员属于对象,在类的外部,通过对象名去调用,在类的内部,通过this关键字调用
4、静态成员属于类,不管在外部还是内部,都需要类名进行调用。如果调用者和被调用者在同一个类中,可以省略类名
5、静态成员在类的内部可以直接调用,不需要传参数。类直接调用的,一定是静态成员;对象直接调用的,一定是实例成员。静态成员的优点在于调用简单,无需创建对象,可以直接通过类名调用
6、静态成员在项目中,一般都作为工具类使用
7、静态成员具有全局共享的特点,存储在静态存储区域,在整个的程序运行中,都不会被资源释放。所以静态成员始终消耗内存资源
8、普通(实例)类中,可以包含静态成员;静态类中,不能包含实例成员。静态先于实例出现在内存中
9、静态类是不允许创建对象的。因为静态类时拿类去调用的,创不创建对象没有意义(因为实例成员需要拿对象去调用,所以实例成员用到时要创建对象)

命名空间

1、命名空间相当于类的文件夹,是项目的名称
2、解决项目的重名问题
3、跨项目访问:1、添加对要访问项目的引用 2、导入命名空间 3、将要跨项目访问的类的访问修饰符,修改为public


 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值