C#```

TryParse

cs 复制代码
int x;
bool b = int.TryParse("100", out x);
Console.WriteLine(b);

格式转换

cs 复制代码
//浮点型转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属于引用类型,需要当值类型来使用

cs 复制代码
string text1 = "";
string text2 = string.Empty;

空对象

没有长度,不会分配空间

cs 复制代码
string text2 = null;

字符串拼接(StringBuilder)

cs 复制代码
 StringBuilder sb = new StringBuilder("本周课程信息:");
 string message = "语文";
 sb.AppendFormat($"周一:{message}");
 string str = sb.ToString();
 Console.WriteLine(str);//本周课程信息:周一:语文

转义字符

在App.config文件中,不需要转义,读取字符串,\ 打断点的时候会自动变成 \\

字符串分割、连接、替换

cs 复制代码
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(' ','_'));

只读自动属性

自动属性:编译器自动生成 getset 访问器及其背后的字段,不需要显式地写出这些代码

编译器为自动属性创建一个隐藏的私有字段,并且你无法直接访问该字段

cs 复制代码
public Classroom()
{
    a = 20;
}
public int a{get;} = 10;

只读字段

cs 复制代码
private readonly int id = 10;
public Classroom()
{
    id = 20;
}

构造器复用

cs 复制代码
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;
}

对象(属性)初始化器

只能初始化属性,可以和构造器配合使用

cs 复制代码
Student s = new Student()
{
    id = 1;
    name = "tom";
};

泛型

List<T>

集合赋值,不能直接new_list = old_list,都是指向同一个地址

cs 复制代码
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

cs 复制代码
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为空,加判断

cs 复制代码
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()}");
}

新增两个按钮,关联事件,移除事件

cs 复制代码
    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()}");
        }

ShowDialog

ShowDialog关闭后有返回值

在旧窗体中点击按钮开启新窗体

cs 复制代码
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());
    }
}

在新窗体中点击按钮关闭新窗体

cs 复制代码
private void button1_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
    this.Tag = "123";
    this.Close();
}
相关推荐
电商api接口开发5 小时前
ASP.NET MVC 入门指南
c#·asp.net·mvc
我不是程序猿儿5 小时前
[C#]反射的实战应用,实际数据模拟
开发语言·c#
爱编程的鱼6 小时前
C# 结构(Struct)
开发语言·人工智能·算法·c#
是阿根7 小时前
unity使用iTextSharp生成PDF文件
unity·c#·游戏引擎
ABAP 成8 小时前
.NET Framework 4.0可用EXCEL导入至DataTable
c#
WineMonk10 小时前
C#多线程访问资源
c#
Bardb10 小时前
04-stm32的标准外设库
stm32·c#
风,停下11 小时前
C#基于Sunnyui框架和MVC模式实现用户登录管理
设计模式·c#·mvc
钢铁男儿11 小时前
C# 实战_RichTextBox选中某一行条目高亮,离开恢复
开发语言·c#
千叶真尹13 小时前
【无标题】
c#·linq