C#基础知识

C#基础知识 这里写自定义目录vdsvbdfs标题一、C#基础1.思维导图2.变量3.C# 类、对象、字段、属性、方法、函数、变量4.索引器 Indexer5.全套汇总静态构造 调用写法6.各种成员调用写法重点照着格式记一、C#基础1.思维导图2.变量internal class Class2 { //static静态修饰词可以修饰类属性字段以及方法。 public static int a; public int b;//类里面的变量叫全局变量实例变量 public Class2() { } }静态/实例//静态a直接用类名访问 Class2.a 100; //实例b必须new对象 Class2 c1 new Class2(); Class2 c2 new Class2(); c1.b 10; c2.b 20; //c1.b 和 c2.b互不干扰 Class2.a 999; //c1、c2读取Class2.a都是999共用同一个静态变量无参构造例子public Class2() { b 100; // 创建对象的时候直接把实例字段b赋值成100 }此时执行Class2 obj new Class2(); Console.WriteLine(obj.b); //输出100new的时候构造已经帮你赋值好了3.C# 类、对象、字段、属性、方法、函数、变量把这一堆概念一次性理清楚结合代码例子区分容易混淆的词。//【类】模板、图纸抽象的设计不是实物 internal class Person { //【字段】类里面直接写的变量存数据一般私有 private string _name; //【属性】包裹字段提供get/set对外读写 public string Name { get { return _name; } set { _name value; } } //【构造函数】特殊函数new的时候调用属于类的函数 public Person(string name) { _name name; } //【方法】普通实例方法 public void SayHello() { //【局部变量】写在方法内部出了方法就失效 string msg $你好我是{_name}; Console.WriteLine(msg); } } //【对象】根据类这个图纸 new 出来的真实实例实物 Person p1 new Person(张三); p1.SayHello();4.索引器 Indexer让类可以像数组一样用对象[下标]访问关键字thisclass BookList { private string[] books new string[3]; //索引器 public string this[int index] { get { return books[index]; } set { books[index] value; } } }使用BookList bl new BookList(); bl[0] C#教程; //调用set Console.WriteLine(bl[0]); //调用get对象初始化器//对象初始化器 Class4 c41 new Class4(5) { A 1,//先跑 new Class4(5) → **执行有参构造函数**A5. //再跑A1覆盖A5.所以最后A1。 B 2, C 3, D 4 }; Console.WriteLine(c41.A);5.全套汇总静态构造 调用写法全套汇总C# 类、对象、字段、属性、方法、函数、变量访问修饰符 静态构造 调用写法说明 C#没有真正全局变量你说的「new 对象时初始化的全局变量」实例字段成员字段局部变量写在方法内部方法内初始化无默认值必须赋值才能用。using System; namespace DemoTest { internal class Class2 { // 【字段】 // 私有 实例字段new对象的时候初始化每个对象一份 private int _insField; // 公开 实例字段 public int InsFieldPublic; // 私有 静态字段属于类new之前就存在所有对象共享 private static int _staField; // 公开 静态字段 public static int StaFieldPublic; // 【属性】 // 公开实例属性每个对象自己的 public int InsProp { get; set; } // 公开静态属性属于类全部对象共享 public static int StaProp { get; set; } // 静态构造函数 ✨【静态构造】 // 不能写 public/private第一次用到这个类自动执行**只跑1次**不用手动调用、不用new static Class2() { _staField 1000; StaFieldPublic 2000; StaProp 999; Console.WriteLine(✅静态构造函数执行类第一次被访问); } // 实例构造函数无参 new对象时执行 public Class2() { _insField 10; InsFieldPublic 20; InsProp 30; Console.WriteLine(✅实例无参构造执行 new Class2()); } // 实例构造函数有参 public Class2(int val) { _insField val; Console.WriteLine($✅实例有参构造执行 new Class2({val})); } // 【实例方法】公开属于对象必须new public void InstanceSum() { // 局部变量写在方法里面方法内部初始化出方法就销毁 int localNum 50; Console.WriteLine($实例方法_insField{_insField}局部变量localNum{localNum}); } // 【私有实例方法】类内部才能调用外部访问不到 private void PrivateInsMethod() { Console.WriteLine(私有实例方法外面不能调用); } // 【公开静态方法】属于类不需要new对象 public static void StaticShow() { Console.WriteLine($静态方法 _staField{_staField}); } // 【私有静态方法】仅本类内部可用 private static void PrivateStaticMethod() { } } }6.各种成员调用写法重点照着格式记//1️⃣ 实例成员字段、属性、实例方法 → 必须 new出对象用【对象.】调用 Class2 c2 new Class2(); c2.InsFieldPublic 111; //调用【公开实例字段】 c2.InsProp 222; //调用【公开实例属性】 c2.InstanceSum(); //调用【公开实例方法】 // c2.PrivateInsMethod(); //❌报错私有实例方法外部不能调用 //2️⃣ 静态成员静态字段、静态属性、静态方法→ 使用【类名.】调用不需要new对象 Class2.StaFieldPublic 333; //调用【公开静态字段】 Class2.StaProp 444; //调用【公开静态属性】 Class2.StaticShow(); //调用【公开静态方法】 // Class2.PrivateStaticMethod();//❌报错私有静态方法外部不可调用 //3️⃣静态构造函数!!!不能手动写代码调用系统CLR自动触发 // Class2(); //❌语法错误不能手动调用静态构造