黑马程序员:C#基础篇(二)

本文详细讲解了C#中的静态类、静态成员、构造函数、析构函数、方法的重载以及字段和属性的使用。探讨了静态类的特性,如何使用实例和静态构造函数,以及析构函数的调用时机。此外,还介绍了方法的返回值、重载问题以及运算符重载的概念。最后,阐述了字段、属性的定义和访问规则,以及如何实现索引器。
摘要由CSDN通过智能技术生成

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

1、静态类和静态类成员

静态类和静态类成员用于创建不必依赖类的实例就能够访问的数据和行为。

1.1当类中没有依赖对象标志的数据或行为时,可以使用静态类

静态类的特点:(1)仅包含静态成员(2)不能被实例化(3)是密封的(4)不能包含实例构造函数,可以有静态构造函数对静态字段初始化。(5)不可被继承

1.2静态成员

静态成员与实例成员不同,静态成员是公共的,属于这个类型,不会根据此类型的对象状态的变化而变化。另外注意一点,静态方法和属性只能访问静态字段和静态事件。静态成员在第一次访问且在任何静态构造函数(如果调用了的话)之前初始化。

2、构造函数和析构函数

2.1使用实例构造函数

任何时候只要创建类或者结构的实例,就会调用其构造函数,类和结构可以有多个接受不同参数的构造函数(即重载)。

通过设置构造函数为私有的,还可以限制实例化,如单例模式:

    class MyClass
    {
        static MyClass instance;
        public static MyClass Instance
        {
            get 
            {
                if (instance == null)
                {
                    instance = new MyClass();
                }
                return instance;
            }
        }
        private MyClass() { }
    }

结构类型的构造函数与类的构造函数类似,但是结构不能包含显式默认构造函数(非静态类如果没有声明构造函数,C#编译器会自动提供一个无参公共的默认构造函数),编译器会会为结构提供一个构造函数,用于初始化结构中的字段为默认值。当结构用new运算符时,其实就是调用了其构造函数,而不是像类一样,在堆中分配了地址。

int i =new int();//合法,i=0
Console.Write(i);

int i;
Console.Write(i);//不合法

但是对于值类型来说,调用构造函数不是必须的,可以直接为其赋值。

带参数的构造函数必须通过new语句或者base语句来调用,如:

    public class MyBase
    {
        public int value;
        public MyBase(int value)
        { this.value = value; }
        public MyBase(int value, int x)
        { this.value = value * x; }
    }
    public class MySub : MyBase
    {
        public MySub(int value)
            : base(value)
        {...}
    }

在派生类中,如果不使用base关键字来显式调用基类构造函数,且基类提供了默认构造函数,则将隐式调用默认构造函数,下面的构造函数声明在效果上相同:

先执行基类构造函数,再执行自身构造函数

public MySub(int value)
            : base()
        {...}
public MySub(int value)
        {...}

如果基类没有提供默认(即无参ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值