1、常量与变量
C#中常见的数据类型
数据类型 | 说明 |
int(整形) | 用于存储整数,如:一天的时间是24小时,一星期有7天 |
double(双精度) | 用于存储小数,如:参考书的价格是22.5元,手机待机时间22.5小时 |
char(字符型) | 用于存储单个字符,如:性别‘男’、‘女’,电灯‘开’、‘关’ |
bool(布尔) | 表示现实中的“真”或“假”这两个概念,分别采用true和false这两个值来表示 |
string(字符串) | 用于存储一串字符,如:“我的爱好是踢足球”,“我喜欢C#程序” |
C#中常用的转义字符
转义符 | 说明 |
\' | 单引号' |
\" | 双引号" |
\\ | 反斜线符\ |
\0 | 空字符 |
\uhhhh | 使用十六进制形式的Unicode字符,例如,字符\u0041表示Unicode字符A |
\a | 响铃(警报)符,与\u007匹配 |
\b | 退格符,与\u0008匹配 |
\t | Tab符,与\u0009匹配 |
\r | 回车符,与\u000D匹配 |
\v | 垂直Tab符,与\u000B匹配 |
\f | 换页符,与\u000C匹配 |
\n | 换行符,与\u000A匹配 |
\0dd | 使用八进制形式的ASCII字符,例如,字符\040表示ASCII的空格字符 |
\xhh | 使用十六进制形式的ASCII字符,例如,字符\x41表示ASCII字符A |
C#中简单类型
类型 | 别名 | 长度/位 |
sbyte | System.Sbyte | 8 |
byte | System.Byte | 8 |
char | System.Char | 16 |
short | System.Int16 | 16 |
ushort | System.UInt16 | 16 |
int | System.Int32 | 32 |
uint | System.UInt32 | 32 |
long | System.Int64 | 64 |
ulong | System.UInt64 | 64 |
float | System.Single | 32 |
double | System.Double | 64 |
decimal | System.Decimal | 128 |
bool | System.Boolean | 1 |
C#中简的整数型
类型 | 描述 | 范围 | 长度/b |
sbyte | 有符号字节型 | -128~127 | 8 |
byte | 字节型 | 0~255 | 8 |
char | 字符型 | U+0000~U+FFFF(Unicode字符集中的字符) | 16 |
short | 短整型 | -32768~32767 | 16 |
ushort | 无符号短整型 | 0~65535 | 16 |
int | 整形 | -2147483648~2147483647 | 32 |
uint | 无符号整型 | 0~4294967295 | 32 |
long | 长整型 | -9223372036854775808~9223372036854775807 | 64 |
ulong | 无符号长整形 | 0~18446744073709551615 | 64 |
2、实例2-1枚举型
2.1创建一个Windows窗体,在窗体中添加一个Label控件
2.2在双击后窗体控件后的代码编辑页面中输入代码,源代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } enum Season { Spring =10,Summer ,Autumn=20,Winter}; private void Test2_1_Load(object sender, EventArgs e) { Season currentSeason, nextSeason; //定义枚举变量currentSeason和nextSeason currentSeason = Season.Summer;//使用枚举值Summer初始化currentSeason nextSeason = (Season)21;//将整数转换为枚举值,初始化nextSeson //将枚举型变量的值转换为整数值 label1.Text = "枚举变量currentSeason的值为:" + (int)currentSeason; //使用枚举型变量的值 label1.Text += "\n枚举变量 nextSeason代表枚举元素:" + nextSeason; } } }
2.3运行效果如下
3.实例2-3结构型的使用
3.1首先在Windows窗体中,添加一个Label控件
3.2在窗体设计区中双击空白区域,然后在代码编辑区,编辑如下源代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } struct Student //声明结构型 { public int stuNo; //申明结构型的数据成员 public string stuName; public int age; public char sex; } private void Test2_1_Load(object sender, EventArgs e) { Student stu; //定义结构型变量stu stu.stuNo = 1000; //为stu的成员变量stuNo赋值 stu.stuName = "令狐冲"; //为stu的成员变量stuName赋值 stu.age = 25; //为stu的成员变量age赋值 stu.sex = '男'; //为stu的成员变量sex赋值 label1.Text = "学生信息:\n姓名:" + stu.stuName; //使用stu的成员变量stuName label1.Text += "\n学号:" + stu.stuNo; //使用stu的成员变量stuNo label1.Text += "\n性别:" + stu.sex; //使用stu的成员变量sex label1.Text += "\n年龄:" + stu.age; //使用stu的成员变量age } } }
3.3运行效果如下
4、实例2-4赋值运算符及隐式数据类型转换应用测试
(1)首先在Windows窗体中添加一个名字为lblShow的Label控件。
(2)然后在源代码视图中编辑如下代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } private void Test2_1_Load(object sender, EventArgs e) { int a = 0, b = 1, c = 2; a += 2; //a=a+2=2 b *= c - 5; //b=b*(c-5)=b*-3=-3 c %=2; //c=c%2=1 lblShow.Text = "a=" + a + "," + "b=" + b + "," + "c+" + c; } } }
(3)该程序运行结果如图。
5、实例2-5赋关系运算符与逻辑运算符测试
(1)首先在Windows窗体中添加一个名字为lblShow的Label控件。
(2)然后在源代码视图中编辑如下代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } private void Test2_1_Load(object sender, EventArgs e) { int i = 25, j = 12; bool k = (i != j); string result = "i!=j的值为" + k; k = (i != j && i >= j + 20); result += "\n i!=j&&i>=j+20的值为" + k; lblShow.Text = result; } } }
(3)该程序运行结果如图。
6、实例2-6数组及其应用演示
(1)首先在Windows窗体中添加一个名字为lblShow的Label控件。
(2)然后在源代码视图中编辑如下代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } private void Test2_1_Load(object sender, EventArgs e) { int[] a = { 5, 1, 2, 4, 3 }; //创建数组a并初始化 int[] b = new int[5]; //创建数组b Array.Copy(a, b, 5); //把数组a所有数组元素复制给数组b Array.Clear(a, 0, 5); //清除数组a各数组元素的值 lblShow.Text = b[0] + "" + b[1] + "" + b[2] + "" + b[3] + "" + b[4] + "\n"; Array.Sort(b); //对数组b的元素进行排序 lblShow.Text += b[0] + "" + b[1] + "" + b[2] + "" + b[3] + "" + b[4] + "\n"; Array.Reverse(b); //对数组b的元素进行反转 lblShow.Text += b[0] + "" + b[1] + "" + b[2] + "" + b[3] + "" + b[4] + "\n"; } } }
(3)该程序运行结果如图。
7、实例2-7赋值运算符及隐式数据类型转换应用测试
(1)首先在Windows窗体中添加一个名字为lblShow的Label控件。
(2)然后在源代码视图中编辑如下代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } private void Test2_1_Load(object sender, EventArgs e) { int[,] a = new int[2, 3] { {1,2,3 },{4,5,6 } }; int[][] b = new int[2][]; b[0] = new int[3] { 1, 2, 3 }; b[1] = new int[4] { 4, 5, 6, 7 }; lblShow.Text = "a是二组数组,共6个数组元素,均为整数值."; lblShow.Text += "\n a[0,0]的值为:" + a[0, 0]; lblShow.Text += "\n a[1,2]的值为:" + a[1, 2]; lblShow.Text += "\n b是一维数组,共2个数组元素,均为子数组."; lblShow.Text += "\n b[0,0]的值为:" + b[0][0]; lblShow.Text += "\n b[1,2]的值为:" + b[1][2]; } } }
(3)该程序运行结果如图。
8、实例2-8赋值运算符及隐式数据类型转换应用测试
(1)首先在Windows窗体中添加三个Label控件、两个TextBox控件以及两个Button控件。
(2)然后在源代码视图中编辑如下代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test2_1 { public partial class Test2_1 : Form { public Test2_1() { InitializeComponent(); } private void Test2_1_Load(object sender, EventArgs e) { } StringBuilder sb = new StringBuilder(); //用于保存用户输入 private void btnAdd_Click(object sender, EventArgs e) { sb.Append(txtSource.Text); //添加字符串 lblShow.Text = "字符串\"" + sb.ToString() + "\"的长度为" + sb.Length; } private void btnSearch_Click(object sender, EventArgs e) { string s = sb.ToString(); int pos = s.IndexOf(txtSearch.Text); lblShow.Text += "\n目标起始索引值为" + pos; } } }
(3)该程序运行结果如图。
PS:课后练习
共分三块内容,第一块是识别日期的星期天数,第二块是计算器,第三块是数组排序。源代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 第二章_实例 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } enum WeekDay { 星期天,星期一,星期二,星期三,星期四,星期五,星期六}; double[] a = new double[5]; int i = 0; private void button1_Click(object sender, EventArgs e) { DateTime dt = Convert.ToDateTime(textBox1.Text); WeekDay wd = (WeekDay)dt.DayOfWeek; label2.Text = "这一天是" + wd + "."; } private void button2_Click(object sender, EventArgs e) { double a = Convert.ToDouble(textBox2.Text); double b = Convert.ToDouble(textBox3.Text); label5.Text = a + "+" + b + "的结果为"; label5.Text += (a + b); } private void button3_Click(object sender, EventArgs e) { double a = Convert.ToDouble(textBox2.Text); double b = Convert.ToDouble(textBox3.Text); label5.Text = a + "-" + b + "的结果为"; label5.Text += (a - b); } private void button4_Click(object sender, EventArgs e) { double a = Convert.ToDouble(textBox2.Text); double b = Convert.ToDouble(textBox3.Text); label5.Text = a + "*" + b + "的结果为"; label5.Text += (a *b); } private void button5_Click(object sender, EventArgs e) { double a = Convert.ToDouble(textBox2.Text); double b = Convert.ToDouble(textBox3.Text); label5.Text = a + "\\" + b + "的结果为"; double c = a / b; label5.Text += c; } private void button6_Click(object sender, EventArgs e) { double a = Convert.ToDouble(textBox2.Text); double b = Convert.ToDouble(textBox3.Text); label5.Text = a + "的" + b + "次方为"; double c = Math.Pow(a,b); label5.Text += c; } private void button7_Click(object sender, EventArgs e) { a[i] = Convert.ToDouble(textBox4.Text); label7.Text += a[i] + " "; i++; } private void button8_Click(object sender, EventArgs e) { Array.Sort(a); label8.Text += a[0] + " " + a[1] + " " + a[2] + " " + a[3] + " " + a[4]; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?