c#学习笔记

首先,我要说明,这是写给我自己看的,记录自己以前不牢固的知识点,如果你进来了,我只能说:“sorry !”。

其次,小小的抱怨一下-----csdn的博客不支持无限极分类,以后笔记只能笼统的放一起了。

最后,正文~~

类和接口

1.密封。

使用 sealed 关键字来禁止类的继承或成员的重写,如 string 类。

public sealed class String
{
    //...
}
public class Parent
{
    public sealed void Method()
    {
        //...
    }
}


2.重写。

重写的目的是:使用基类实例调用派生类的方法。关键字为一对,virtual----override

    class Program
    {
        static void Main(string[] args)
        {
            Parent c1 = new C1();
            Parent c2 = new C2();
            c1.WriteName();//out:c1
            c2.WriteName();//out:parent
        }
    }

    class Parent
    {
        public virtual void WriteName()
        {
            Console.WriteLine("Parent");
        }
    }
    class C1 : Parent
    {
        public override void WriteName()
        {
            Console.WriteLine("c1");
        }
    }
    class C2 : Parent
    {
        public new void WriteName()
            //不指定new关键字是一个结果,但是会有一个警告
        {
            Console.WriteLine("c2");
        }
    }
3.扩展方法。
不利于扩展,建议已修改源码或者继承的方式实现。但对于无法获得源码又没法继承的类就只能这样了。 注:扩展方法也可以用于接口和集合。

    class Program
    {
        static void Main(string[] args)
        {
            string str = "123";
            Console.WriteLine(str.ToInt() + 12);
        }
    }

    public static class Hander
    {
        public static int ToInt(this string str)
        {
            return Int32.Parse(str);
        }
    }

4.接口。

接口可以提供方法或属性的契约,如果是属性,需指定get或set。实现时必须给出实现,即{};另外接口的定义不应该包含任何访问修饰符。显式实现(即方法名前加接口名.)必须与接口一致。隐式实现则可指定为public,并使用其他修饰符,如:virtual、sealed。

5.运算符重载。

可以对+  -  *  /  %  &  |  ^  <<  >> 及其与赋值运算符的复合运算符(自动),  ==  !=  true  false,转换运算符(隐式转换implicit,显式转换expliclit)   进行重载。

    class Class1
    {
        private int data;
        public static int operator +(Class1 left, Class1 right)
        {
            return left.data + right.data;
        }
        public static bool operator true(Class1 c)
            //必须和false成对出现
            //可用于if、do、while、for
        {
            return c.data != 0;
        }
        public static bool operator false(Class1 c)
        {
            return c.data == 0;
        }
        public static implicit operator int(Class1 c)//隐式
        {
            return c.data;
        }
        public static explicit operator Class1(int d)
        {
            return new Class1();
        }

    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值