C#笔记

1:对象初始化操作

C#3.0中引入了新的对象初始化方法,之前的方式:

User user = new User();

user.name = "test";

user.age = 10;

现在的方式:

User user = new User(){name="test",age=10};

变得更简洁,可读性更好。

2:获取随机数

多次获取时要保证Random只实例化一次,否则获取到的随机数会相同。

 static long tick = DateTime.Now.Ticks;

        Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));

        private int getRandom()

        {

            return ran.Next(1,10);

        }

 3:属性(Private)的封装

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            User user = new User();

            user.Name = "testname";

            Console.WriteLine(user.Name);

        }

    }



    class User

    {

        private String name;



        public String Name

        {

            get

            {

                return name;

            }

            set

            {

                name = value +",hahaha!";

            }

        }

    }

}

 4:继承中的方法覆盖

在子类中使用override关键字 向子类中增加一个方法,可以替换掉它继承的父类中的方法。

覆盖一个方法之前,需要在基类中将这个方法声明为virtual。子类中可以使用base访问基类中方法。

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            Teacher teacher = new Teacher();

            Student student = new Student();



            teacher.name = "ZhangSan";

            teacher.age = 26;

            teacher.PintfInfo();

            teacher.SayHello();



            student.name = "LiSi";

            student.age = 21;

            student.PintfInfo();

            student.SayHello();

        }

    }





    class Person

    {

        public String name;

        public int age;



        //使用virtual关键字,声明允许子类覆盖

        public virtual void SayHello()

        {

            Console.WriteLine("Person.SayHello()");

        }

    }



    class Student : Person

    {

        public void PintfInfo()

        {

            Console.WriteLine("Name:"+name+",Age:"+age);

            //子类中可以使用base访问基类中方法

            base.SayHello();

        }



        //子类中使用override关键字,声明覆盖父类中的方法

        public override void SayHello()

        {

            Console.WriteLine(name+" SayHello()");

        }

    }



    class Teacher : Person

    {

        public void PintfInfo()

        {

            Console.WriteLine("Name:" + name + ",Age:" + age);

        }

    }

}

 5:List

List<T> list = new List<T>();

要让List的内置Sort()方法能够处理某个类,只需让这个类实现IComparable接口,并增加一个CompareTo方法。

通过IComparable接口告诉List如何进行排序。 CompareTo方法返回1,0,-1。

6:键值对Dictionary

 static void DictionaryTest()

        {

            Dictionary<string, string> dic = new Dictionary<string, string>();

            dic.Add("zs", "zhangsan");

            dic.Add("ls", "lisi");



            Console.WriteLine(dic["zs"]);

        }
foreach (string value in dic.Values)

            {

                Console.WriteLine(value);

            }



            foreach(string key in dic.Keys)

            {

                Console.WriteLine(key);

            }

 

你可能感兴趣的:(C#)