类 、 结构体 、 枚举 、 接口 等类型using System;
using AAA;namespace ConsoleAppDemo
{class MainClass{public static void Main(string[] args){Person.name = "Lee"; // using AAA; 默认会去使用AAA中的PersonBBB.Person.name = "Zhang";Animal.name = "Dog"; // using AAA; 默认会去使用AAA中的Animal}}}namespace AAA {static class Person{public static string name;}static class Animal{public static string name;}
}namespace BBB
{static class Person{public static string name;}namespace CCC{static class Person{public static string name;}}
}
注意:
权限低的访问不了权限高的,权限低的也当不了权限高的的父类
| 访问修饰符 | 描述 |
|---|---|
| private | 成员只能在类型的内部访问,这是默认设置 |
| internal | 成员可在类型的内部或同一程序集的任何类型中访问 |
| protected | 成员可在类型的内部或从类型继承的任何类型中访问 |
| public | 成员在任何地方都可以访问 |
| internal protected | 成员可在类型的内部、同一程序集的任何类型以及从该类型继承的任何类型中访问,与虚构的访问修饰符 internal_or_protected 等效 |
| private protected | 成员可在类型的内部、同一程序集的任何类型以及从该类型继承的任何类型中访问,相当于虚构的访问修饰符 internal_and_protected。这种组合只能在C#7.2或更高版本中使用 |
enum// 枚举中指定元素类型(并且只能配置成整型)及默认值
enum Weekday : int
{Sun = 0, Mon, Tue, Wed, Thu, Fri, Sat,
}internal class Program
{static void Main(string[] args){Console.WriteLine(Weekday.Sun); // SunConsole.WriteLine(Weekday.Sun == 0); // TrueConsole.WriteLine((int)Weekday.Sun == 0); // TrueConsole.WriteLine(Weekday.Mon); // Mon//Console.WriteLine(Weekday.Mon == 1); // ErrorConsole.WriteLine((int)Weekday.Mon == 1); // TrueConsole.WriteLine(Weekday.Tue); // TueConsole.WriteLine((int)Weekday.Tue); // 2Console.WriteLine(Weekday.Wed); // WedConsole.WriteLine(Weekday.Thu); // ThuConsole.WriteLine(Weekday.Fri); // FriConsole.WriteLine(Weekday.Sat); // SatWeekday weekday = Weekday.Sun;// 周日switch (weekday){case Weekday.Sun:Console.WriteLine("周日");break;case Weekday.Mon:Console.WriteLine("周一");break;case Weekday.Tue:Console.WriteLine("周二");break;case Weekday.Wed:Console.WriteLine("周三");break;case Weekday.Thu:Console.WriteLine("周四");break;case Weekday.Fri:Console.WriteLine("周五");break;case Weekday.Sat:Console.WriteLine("周六");break;}}
}
class Person
{public string name;public int age;public Person(string name, int age){this.name = name;this.age = age;}
}
Listusing System.Collections.Generic;internal class Program
{static void Main(string[] args){// List persons = new List();// persons.Add(new Person("Lee", 25));// persons.Add(new Person("ZhangSan", 30));List persons = new List{new Person("Lee", 25),new Person("ZhangSan", 30)};// List
ArrayListusing System.Collections;internal class Program
{static void Main(string[] args){// ArrayList personList = new ArrayList();// personList.Add(new Person("Lee", 25));// personList.Add(123);// personList.Add("abc");ArrayList personList = new ArrayList{new Person("Lee", 25),123,"abc"};foreach (var person in personList){Console.WriteLine(person); // ConsoleApp.Person 123 abc}}
}
Sort 排序internal class Program
{static void Main(string[] args){ArrayList personList1 = new ArrayList();personList1.AddRange(new Person[] {new Person("001", "Lee", 25),new Person("002", "张三", 10),new Person("003", "李四", 20),new Person("004", "王五", 20),new Person("005", "赵六", 18),});personList1.Sort();foreach (Person person in personList1){//[001] Lee: 25//[003] 李四: 20//[004] 王五: 20//[005] 赵六: 18//[002] 张三: 10Console.WriteLine($"[{person.id}] {person.name}:{person.age}");}List personList2 = new List();personList2.AddRange(new Person[] {new Person("001", "Lee", 25),new Person("002", "张三", 10),new Person("003", "李四", 20),new Person("004", "王五", 20),new Person("005", "赵六", 18),});personList2.Sort();foreach (Person person in personList2){//[001] Lee: 25//[003] 李四: 20//[004] 王五: 20//[005] 赵六: 18//[002] 张三: 10Console.WriteLine($"[{person.id}] {person.name}:{person.age}");}}
}class Person : IComparable
{public string id;public string name;public int age;public Person(string id, string name, int age){this.id = id;this.name = name;this.age = age;}public int CompareTo(object obj){// 判断obj是不是Personif (obj is Person){// 将obj转型为Person类型Person person = obj as Person;//return age - person.age; // 升序return person.age - age; // 降序}return 0; // 默认}}
Hashtableusing System.Collections;Hashtable obj = new Hashtable();
obj.Add("name", "Lee");
obj.Add("age", 18);
obj.Add(6, true);//Hashtable obj = new Hashtable
//{
// { "name", "Lee" },
// { "age", 18 },
// { 6, true }
//};ICollection keys = obj.Keys;
ICollection values = obj.Values;foreach (object key in keys)
{Console.WriteLine(key); // 6 age name
}foreach (object value in values)
{Console.WriteLine(value); // True 18 Lee
}foreach (DictionaryEntry item in obj)
{Console.WriteLine($"obj[{item.Key}]={item.Value}"); // obj[6]=True obj[age] = 18 obj[name] = Lee
}
Dictionaryusing System.Collections.Generic;Dictionary dict = new Dictionary
{{ "name", "Lee" },{ "age", 18 },{ "sex", "男" }
};foreach (KeyValuePair item in dict)
{Console.WriteLine($"dict[{item.Key}]={item.Value}"); // dict[name]=Lee dict[age]=18 dict[sex]=男
}
class MainClass
{public static void Main(string[] args){// 解决打印中文乱码问题Console.OutputEncoding = System.Text.Encoding.UTF8;Person.Forefathers = "类人猿"; // 静态属性归类进行访问Person lee = new Person();lee.name = "ProsperLee"; // 非静态属性归对象进行访问lee.Info(); // 姓名:ProsperLeePerson zhang = new Person {name = "张三",};zhang.Info(); // 姓名:张三lee.ForefathersInfo(); // ProsperLee 的祖先是 类人猿zhang.ForefathersInfo(); // 张三 的祖先是 类人猿}}class Person
{public static string Forefathers;public string name;public void Info(){Console.WriteLine($"姓名:{name}");}public void ForefathersInfo() {Console.WriteLine($"{name} 的祖先是 {Forefathers}");}}
静态类
static Xxx{} -> new Xxx() -> Errorstatic Xxx{ public void Fun(){} } -> ErrorObject 不能继承也不能被继承示例
class MainClass
{public static void Main(string[] args){Person.name = "Lee";Console.WriteLine(Person.name); // Person Show ~ LeeConsole.WriteLine(Person.name); // Lee}
}public static class Person {public static string name;static Person() {Console.WriteLine("Person Show ~");}}
用途
readonly 和 constconst 常量必须拥有初始值, readonly 可以没有readonly 可以在构造方法中进行赋值修改, const 不可以class Person
{public readonly int x;// public const int y; // Errorpublic const int y = 100;public Person() {x = 200;// y = 200; // Error}}