C#```
- 开源代码
- 2025-08-26 14:27:03

TryParse int x; bool b = int.TryParse("100", out x); Console.WriteLine(b); 格式转换 //浮点型转decimal,必须强转 double f = 0.1; decimal m = (decimal)f; //转float是ToSingle Convert.ToSingle(f); DateTime d = DateTime.Now; Console.WriteLine(d.ToString("yyyy-MMMM-dddd")); 空值
可以判断三种情况,长度 text1.length == 0,会分配空间
==或equals默认只能比较“值类型”或“字符串”类型,不能比较对象类型 equals,不区分大小写 string属于引用类型,需要当值类型来使用
string text1 = ""; string text2 = string.Empty; 空对象没有长度,不会分配空间
string text2 = null; 字符串拼接(StringBuilder) StringBuilder sb = new StringBuilder("本周课程信息:"); string message = "语文"; sb.AppendFormat($"周一:{message}"); string str = sb.ToString(); Console.WriteLine(str);//本周课程信息:周一:语文 转义字符在App.config文件中,不需要转义,读取字符串,\ 打断点的时候会自动变成 \\
字符串分割、连接、替换 string str = "AB EF HU 00"; string[] s = str.Split();//默认空格分割 str = string.Join("_", s); Console.WriteLine(str); Console.WriteLine(string.Join("+",s)); Console.WriteLine(str.Replace(' ','_')); 只读自动属性自动属性:编译器自动生成 get 和 set 访问器及其背后的字段,不需要显式地写出这些代码
编译器为自动属性创建一个隐藏的私有字段,并且你无法直接访问该字段
public Classroom() { a = 20; } public int a{get;} = 10; 只读字段 private readonly int id = 10; public Classroom() { id = 20; } 构造器复用 public A(int a,int b) { this.a = a; this.b = b; } public A(int a,int b,int c):this(a,b) { this.c = c; } 对象(属性)初始化器只能初始化属性,可以和构造器配合使用
Student s = new Student() { id = 1; name = "tom"; }; 泛型 List<T>集合赋值,不能直接new_list = old_list,都是指向同一个地址
List<string> old_list = new List<string>(); List<string> new_list = new List<string>(old_list);集合、数组转换,ToList()、ToArray()
list.AddRange(array);将数组直接添加到集合
list.RemoveAt(2);按照索引删除
Dictionary<K,V>初始化,通过key获得对象,遍历key,遍历value
Dictionary<string, Student> s = new Dictionary<string, Student> { ["first"] = new Student("tom", 1), ["second"] = new Student("jack", 2) }; Console.WriteLine(s["first"]);//输出的是对象 Console.WriteLine(s["first"].name); foreach (string item in s.Keys) Console.Write(item + " "); Console.WriteLine(); foreach (Student item in s.Values) Console.Write(item.ToString() + " "); 事件1、定义事件 2、处理事件 3、关联事件
单击一个按钮,就输出对应的一段话
可以在属性Tag存数据,从sender取出来
优化会先把控件加到Controls集合中
要选择三个按钮,根据Tag判断,加上btn_
遍历Controls集合,可能其他控件的Tag为空,加判断
public Form1() { InitializeComponent(); //this.btn1.Click += new System.EventHandler(this.btn_Click); //this.btn2.Click += new System.EventHandler(this.btn_Click); //this.btn3.Click += new System.EventHandler(this.btn_Click); foreach(Control item in Controls) { if(item.Tag != null && item.Tag.ToString().Contains("btn_")) { item.Click += new System.EventHandler(this.btn_Click); } } } private void btn_Click(object sender, EventArgs e) { Button btn = (Button)sender; MessageBox.Show($"{btn.Text} {btn.Tag.ToString()}"); }新增两个按钮,关联事件,移除事件
public partial class Form1 : Form { public Form1() { InitializeComponent(); Event(true); } public void Event(bool isAdd) { foreach (Control item in Controls) { if (item.Tag != null && item.Tag.ToString().Contains("btn_")) { if (isAdd) item.Click += new System.EventHandler(this.btn_Click); else item.Click -= new System.EventHandler(this.btn_Click); } } } private void btn4_Click(object sender, EventArgs e) { Event(true); } private void btn5_Click(object sender, EventArgs e) { Event(false); } private void btn_Click(object sender, EventArgs e) { Button btn = (Button)sender; MessageBox.Show($"{btn.Text} {btn.Tag.ToString()}"); } ShowDialogShowDialog关闭后有返回值
在旧窗体中点击按钮开启新窗体
private void button1_Click(object sender, EventArgs e) { Form2 f = new Form2(); DialogResult result = f.ShowDialog(); if(result == DialogResult.OK) { MessageBox.Show(f.Tag.ToString()); } }在新窗体中点击按钮关闭新窗体
private void button1_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; this.Tag = "123"; this.Close(); }