.NET基础-14-接口|值类型和引用类型|MD5加密

接口:

派生类只能继承一个类(单根性决定的),但是如果需要继承多个类时候,就可以使用接口来实现,一个派生类可以继承多个接口,类只能单继承,但接口可以多继承

接口的成员不能加访问修饰符,默认为public

接口成员不能有定义,就是说接口不能有方法体,接口不能有实现

一个类如果继承了一个接口,则必须实现该接口中所有的成员(这里是实现,和虚方法以及抽象类中的重写类似但不同)

接口中只能有方法,属性,事件,索引器,但是不能有字段和构造函数

接口与接口之间可以继承,并且可以多继承

类可以继承接口,并且可以多继承,但是接口不能继承类

如果一个类继承了另外一个类并且实现了其他接口,则继承的类必须写在接口的前面

为了统一接口一般以I开头,以able结尾,表示我可以,表示一种能力

抽象类,静态类,接口都不能实例化

子类继承接口的时候有普通实现和显示实现两种方式,一般使用普通实现,显示实现和普通实现的效果是一样的,但是显示实现解决了子类中有相同方法的名称的问题

接口的功能亚奥尽量单一

接口实现多态:

接口类

    public interface IPerson
    {
        string SayHelo();

    }

学生类:

    public class Student : IPerson
    {
        public string SayHelo()
        {
            return "I am a Student";
        }
    }

老师类:

    public class Teacher : IPerson
    {
        public string SayHelo()
        {
            return "I am a Teacher";
        }
    }

多态的实现

        static void Main(string[] args)
        {
            //用接口实现多态
            IPerson[] ip = { new Student(), new Teacher() };
            foreach (var item in ip)
            {
                Console.WriteLine(item.SayHelo());
            }
            Console.ReadKey();
        }


值传递和引用传递

值传递:在实参传入的是一个值得时候,形参接收之后会创建一个副本,在方法中的操作其实是对副本的操作,如果不是用返回值,或者不适用ref把该值当做引用传递返回,则形参创建的副本和传入的实参是没有关系的

引用传递:在实参出入的时候,形参会创建一个实参地址的副本,这个地址指向和实参是相同的,所以在方法中对该形参副本进行操作的时候,操作的是堆上的同一个对象,修改形参副本,会同时影响传入的实参


MD5加密

MD5这个算法是不可逆的

        static void Main(string[] args)
        {
            string str = "123";
            Console.WriteLine(GetMD5(str));
            Console.ReadKey();
        }

        public static string GetMD5(string str)
        {
            //创建一个MD5加密对象
            MD5 md = MD5.Create();
            //把需要中转换的字符串转换为字节数组
            byte[] bf = System.Text.Encoding.Default.GetBytes(str);
            //返回加密好的MD5字节数组
            byte[] MD5bf = md.ComputeHash(bf);
            //将加密好的字节数组转换成字符串
            //return System.Text.Encoding.Default.GetString(MD5bf);

            //转换成十六进制
            string result = null;
            foreach (var item in MD5bf)
            {
                result += item.ToString("X2");
            }
            return result;
        }


字符型转换成字符串:

            Console.WriteLine((2.5).ToString("C"));//货币
            Console.WriteLine((25).ToString("D"));//十进制
            Console.WriteLine((25).ToString("D5"));//5位,不够的补零
            Console.WriteLine((25000).ToString("E"));//科学计数
            Console.WriteLine((25).ToString("F"));//固定点
            Console.WriteLine((25).ToString("F3"));//三位小数
            Console.WriteLine((25).ToString("G"));//常规
            Console.WriteLine((250).ToString("N"));//数字
            Console.WriteLine((250).ToString("N3"));//数字,保留三位小数
            Console.WriteLine((15).ToString("X"));//十六进制
            Console.WriteLine((15).ToString("X2"));//十六进制,显示两位数/补位





猜你喜欢

转载自blog.csdn.net/m0_37532448/article/details/80321565
今日推荐