特性(Attribute)、 反射(Reflection)、属性(Property)、 索引器(Indexer)、委托(Delegate)、事件(Event)、 集合(Collection)、 泛型(Generic)、 匿名方法、 不安全代码、C# 多线程
超凡 3月前

特性(Attribute):

  1. [Serializable]:标记一个类可以被序列化和反序列化。
  2. [Obsolete("This method is deprecated. Use NewMethod instead.")]:标记一个方法已经过时,建议使用新的方法替换它。
  3. [Conditional("DEBUG")]:标记一个方法只在调试模式下才会执行。

反射(Reflection):

  1. Type type = typeof(MyClass);:获取一个类型的Type对象。
  2. object obj = Activator.CreateInstance(type);:根据类型创建一个实例。
  3. MethodInfo method = type.GetMethod("MyMethod");:获取一个方法的MethodInfo对象。
  4. object result = method.Invoke(obj, new object[] { arg1, arg2 });:动态调用一个方法,并传递参数。

属性(Property):

  1. public string Name { get; set; }:定义一个自动实现的属性。
  2. private int age; public int Age { get { return age; } set { if (value >= 0 && value <= 150) age = value; else throw new ArgumentException("Age must be between 0 and 150."); } }:定义一个具有验证功能的属性。

索引器(Indexer):

  1. public int this[int index] { get { return array[index]; } set { array[index] = value; } }:定义一个基于数组的索引器。
  2. public string this[string key] { get { return dictionary[key]; } set { dictionary[key] = value; } }:定义一个基于字典的索引器。

委托(Delegate):

  1. public delegate void MyDelegate(int x, int y);:定义一个委托类型。
  2. MyDelegate del = (x, y) => Console.WriteLine(x + y);:使用Lambda表达式创建一个委托实例。
  3. void DoSomething(MyDelegate del) { del(1, 2); }:将委托作为参数传递给方法。

事件(Event):

  1. public event EventHandler MyEvent;:定义一个事件。
  2. MyEvent += MyEventHandler;:将一个事件处理方法添加到事件中。
  3. void MyEventHandler(object sender, EventArgs e) { // 处理事件 }:实现一个事件处理方法。

集合(Collection):

  1. List<int> list = new List<int>();:创建一个整数列表。
  2. Dictionary<string, int> dict = new Dictionary<string, int>();:创建一个字符串-整数字典。
  3. foreach (int item in list) { Console.WriteLine(item); }:遍历一个列表中的所有元素。

泛型(Generic):

  1. public class MyList<T> { /* ... */ }:定义一个泛型类。
  2. MyList<int> list = new MyList<int>();:创建一个整数列表实例。
  3. public void MyMethod<T>(T arg) { /* ... */ }:定义一个泛型方法。

匿名方法:

  1. Action<int, int> action = delegate (int x, int y) { Console.WriteLine(x + y); };:使用匿名方法创建一个委托实例。
  2. button.Click += delegate (object sender, EventArgs e) { /* ... */ };:使用匿名方法作为事件处理方法。

不安全代码:

  1. unsafe { int* ptr = &myVariable; // 获取变量的地址 *ptr = 10; // 修改变量的值 }:使用指针修改变量的值。
  2. [DllImport("mydll.dll")] private static extern void MyMethod(int* data);:在C#中调用非托管代码,使用指针传递参数。

C#多线程:

  1. Thread thread = new Thread(new ThreadStart(MyMethod));:创建一个新的线程。
  2. ThreadPool.QueueUserWorkItem(MyMethod);:将一个方法放入线程池中执行。
  3. Task.Run(MyMethod);:使用任务来异步执行一个方法。
最新回复 (2)
  • 和尚 @Ta
    3月前 2

    面对如此强贴,论遇到多大阻力,只要我一息上尚存,就绝不会让它沉沦下去,这一点请楼主放心。 

  • yangbaoqing11 @Ta
    2月前 3

    顶顶顶顶顶顶顶!!!

返回