目录
- C# 特性(Attribute)
- C# 反射(Reflection)
- C# 属性(Property)
- C# 索引器(Indexer)
- C# 委托(Delegate)
- C# 事件(Event)
- C# 集合(Collection)
- C# 泛型(Generic)
- C# 匿名方法
- C# 不安全代码
- C# 多线程
1. C# 特性(Attribute)
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
public string Name { get; set; }
public MyCustomAttribute(string name)
{
Name = name;
}
}
[MyCustomAttribute("Hello")]
class Program
{
static void Main(string[] args)
{
var attributes = typeof(Program).GetCustomAttributes(false);
foreach (var attribute in attributes)
{
var customAttribute = (MyCustomAttribute)attribute;
Console.WriteLine($"Attribute Name: {customAttribute.Name}");
}
}
}
2. C# 反射(Reflection)
using System;
using System.Reflection;
class ReflectionExample
{
public void Display()
{
Console.WriteLine("Reflection Example");
}
static void Main(string[] args)
{
Type type = typeof(ReflectionExample);
object obj = Activator.CreateInstance(type);
MethodInfo methodInfo = type.GetMethod("Display");
methodInfo.Invoke(obj, null);
}
}
3. C# 属性(Property)
class PropertyExample
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
static void Main(string[] args)
{
var obj = new PropertyExample();
obj.Name = "Kimi";
Console.WriteLine(obj.Name);
}
}
4. C# 索引器(Indexer)
class IndexerExample
{
private int[] _array = new int[5];
public int this[int index]
{
get { return _array[index]; }
set { _array[index] = value; }
}
static void Main(string[] args)
{
var obj = new IndexerExample();
obj[0] = 10;
Console.WriteLine(obj[0]);
}
}
5. C# 委托(Delegate)
using System;
class DelegateExample
{
public delegate void DisplayDelegate(string message);
public void Display(string message)
{
Console.WriteLine(message);
}
static void Main(string[] args)
{
var obj = new DelegateExample();
DelegateExample.DisplayDelegate del = obj.Display;
del("Hello, Delegate!");
}
}
6. C# 事件(Event)
using System;
class EventExample
{
public event EventHandler OnEventOccurred;
protected virtual void OnEvent()
{
OnEventOccurred?.Invoke(this, EventArgs.Empty);
}
static void Main(string[] args)
{
var obj = new EventExample();
obj.OnEventOccurred += (sender, e) =>
{
Console.WriteLine("Event occurred!");
};
obj.OnEvent();
}
}
7. C# 集合(Collection)
using System;
using System.Collections.Generic;
class CollectionExample
{
static void Main(string[] args)
{
List<int> list = new List<int> { 1, 2, 3, 4, 5 };
list.Add(6);
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
8. C# 泛型(Generic)
using System;
using System.Collections.Generic;
class GenericExample<T>
{
private T _value;
public T Value
{
get { return _value; }
set { _value = value; }
}
static void Main(string[] args)
{
var genericObj = new GenericExample<int>();
genericObj.Value = 10;
Console.WriteLine(genericObj.Value);
}
}
9. C# 匿名方法
using System;
class AnonymousMethodExample
{
static void Main(string[] args)
{
Action<string> action = delegate(string message) { Console.WriteLine(message); };
action("Hello, Anonymous Method!");
}
}
10. C# 不安全代码
using System;
class UnsafeCodeExample
{
static void Main()
{
unsafe
{
int number = 0;
int* p = &number;
*p = 1234;
Console.WriteLine(number);
}
}
}
11. C# 多线程
using System;
using System.Threading;
class ThreadExample
{
static void ThreadMethod()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Thread: " + i);
Thread.Sleep(1000);
}
}
static void Main(string[] args)
{
Thread thread = new Thread(new ThreadStart(ThreadMethod));
thread.Start();
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main Thread: " + i);
Thread.Sleep(500);
}
thread.Join();
}
}