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();
}
相关推荐
“抚琴”的人13 小时前
【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
c#·工业相机·visionpro·机械视觉
FAREWELL0007514 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
CodeCraft Studio15 小时前
Excel处理控件Spire.XLS系列教程:C# 合并、或取消合并 Excel 单元格
前端·c#·excel
勘察加熊人16 小时前
forms实现连连看
c#
hvinsion16 小时前
PPT助手:一款集计时、远程控制与多屏切换于一身的PPT辅助工具
c#·powerpoint·ppt·ppt助手·ppt翻页
weixin_3077791318 小时前
使用C#实现从Hive的CREATE TABLE语句中提取分区字段名和数据类型
开发语言·数据仓库·hive·c#
时光追逐者18 小时前
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
开发语言·javascript·信息可视化·c#·.net·blazor
与火星的孩子对话19 小时前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
response_L20 小时前
国产系统统信uos和麒麟v10在线打开word给表格赋值
java·c#·word·信创·在线编辑
MasterNeverDown20 小时前
Swagger2Md:让WebAPI文档生成变得轻松高效
c#