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); }