#C# 编程 工业上位机开发 Windows界面编程
基本数据类型
整数类型:int、short、byte
类型 | 位数 | 范围 | 后缀 |
---|---|---|---|
int | 32位 | -2,147,483,648 ~ 2,147,483,647 | 无 |
uint | 32位 | 0 ~ 4,294,967,295 | u |
long | 64位 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | L |
ulong | 64位 | 0 ~ 18,446,744,073,709,551,615 | ul |
short | 16位 | -32,768 ~ 32,767 | 无 |
ushort | 16位 | 0 ~ 65,535 | us |
byte | 8位 | 0 ~ 255 | 无 |
sbyte | 8位 | -128 ~ 127 | 无 |
代码案例:
int x = 10; // 声明一个int32整数变量 x,表示有符号整数,范围为 -2147483648 到 2147483647。并初始化为 10
Console.WriteLine("类型为:" + x.GetType().Name + "数据为:" + x);
short x2 = 10;// 声明一个int16整数变量 x,表示有符号整数,范围为 -32768 到 32767。并初始化为 10
Console.WriteLine("类型为:" + x2.GetType().Name + "数据为:" + x2);
byte x3 = 10;// 声明一个Byte整数变量 x,表示有符号整数,范围为 -128 到 127。并初始化为 10
Console.WriteLine("类型为:" + x3.GetType().Name + "数据为:" + x3);
浮点类型:float、double
float x4 = 10;//float 类型表示单精度浮点数,范围为 -3.40282e+38 到 3.40282e+38。精度相对较低 :内存少
Console.WriteLine("类型为:" + x4.GetType().Name + "数据为:" + x4);
double x5 = 10;//double 类型表示双精度浮点数,范围为 -1.7976931348623157e+308 到 1.7976931348623157e+308。double 类型的精度相对较高,可以更好地表示小数和控制精度。
Console.WriteLine("类型为:" + x5.GetType().Name + "数据为:" + x5);
布尔类型:bool字符串类型
bool x6 = true;//布尔类型只有一个:bool。它用于表示逻辑值,即true或false。
Console.WriteLine("类型为:" + x6.GetType().Name + "数据为:" + x6);
浮点类型:float、double
特点 | float | double |
---|---|---|
位数 | 32位 | 64位 |
精度 | 6-9位有效数字 | 15-17位有效数字 |
范围 | ±3.4e38 | ±1.7e308 |
内存 | 占用4字节 | 占用8字节 |
示例 | float f = 1.2345f; | double d = 1.2345; |
适用场景 | 对内存要求高 | 对精度要求高 |
float x4 = 10;//float 类型表示单精度浮点数,范围为 -3.40282e+38 到 3.40282e+38。精度相对较低 :内存少
Console.WriteLine("类型为:" + x4.GetType().Name + "数据为:" + x4);
double x5 = 10;//double 类型表示双精度浮点数,范围为 -1.7976931348623157e+308 到 1.7976931348623157e+308。double 类型的精度相对较高,可以更好地表示小数和控制精度。
Console.WriteLine("类型为:" + x5.GetType().Name + "数据为:" + x5);
布尔类型:bool类型:
特性 | 说明 |
---|---|
取值 | true, false |
声明 | bool b = true; |
用途 | 逻辑条件判断 |
运算符 | 返回bool值 |
内存 | 1字节 |
转换 | 不能转换为int,可转换为byte/enum |
示例:
bool b1 = true;
bool b2 = (1 == 1);
if (b1 && !b2)
{
// 条件成立时执行
}
byte n = (byte)b1; // 1
Weekday d = (Weekday)b2;
字符串类型
特性 | string | char |
---|---|---|
类型 | 引用类型 | 值类型 |
声明 | string str = “Hello” | char c = ‘A’ |
默认值 | null | ‘\0’ |
拼接 | + 或 Concat() | 不能直接拼接 |
比较 | == 或 Compare() | 直接 == 比较 |
长度 | Length 属性 | 固定为1个字符 |
索引 | str[0] | 无索引 |
转换 | ToString(), Parse() | ToString(), (int)或(char) |
格式化 | String.Format() | 无 |
常用方法 | string | char |
- | - | - |
搜索 | IndexOf() | 无 |
替换 | Replace() | 无 |
分割 | Split() | 无 |
子串 | Substring() | 无 |
反转 | Reverse() | 无 |
大小写 | ToUpper()/ToLower() | ToUpper()/ToLower() |
//- 基础操作:拼接、比较、搜索、替换、分割、转换、长度等
//- 高级操作:子串、反转、大小写转换、字符访问
//- 格式化、连接等辅助操作
string str1 = "Hello";
string str2 = "World!";//string 类型用于表示字符串
char x7 = 'A';//单字符
Console.WriteLine("单字符:" + x7 + " 字符串:" + str1);
Console.WriteLine($"单字符:{x7}数据类型为:{x7.GetType().Name}");
//字符串长度
Console.WriteLine($"字符:串{str1}数据类型为:{str1.GetType().Name}长度为:{str1.Length}");
// 1. 拼接字符串
string result = str1 + " " + str2;//拼接
Console.WriteLine($"拼接字符串:{result}");
//2.比较字符串
string str11 = "Hello";
string str111 = new string(str1);
bool isEqual = str1 == str11;//内容比较
Console.WriteLine($"内容比较==:最简单:{isEqual}");
bool isEquals1 = string.Equals(str1,str11, StringComparison.OrdinalIgnoreCase);//与==作用基本一致,但更强大,可以指定比较规则(比如忽略大小写),相当于调用==的重载方法。
//StringComparison参数指定了比较类型,OrdinalIgnoreCase表示忽略大小写
Console.WriteLine($"内容比较Equals:可以指定比较规则:{isEquals1}");
int isEquals2 = string.Compare(str1,str11,true);//Compare返回整数表示比较结果,返回0表示相等。
//与Equals不同,它可以区分"abc"和"abcd"的顺序
//第二个参数指定为true,将忽略大小写。
//法语字母排序规则,并指定忽略符号
Console.WriteLine(isEquals2);
int isEquals3 = string.CompareOrdinal(str1,str11); //执行简单的二进制比较,不考虑本地化规则,性能最好
Console.WriteLine(isEquals3);
//----------------------查看地址
/*
unsafe //不安全
{
int* pointer = (int*)&str1;
Console.WriteLine((int)pointer); // 打印指针整数值
int* pointer1 = (int*)&str111;
Console.WriteLine((int)pointer1); // 打印指针整数值
}
*/
bool isEquals4 = Object.ReferenceEquals(str1 ,str111);//地址比较
Console.WriteLine(isEquals4);
// 3.搜索字符串
int index = str1.IndexOf("o");
Console.WriteLine($"搜索字符串:{index}");
// 4. 替换字符串
string str12 = "Hello World!";
string result1 = str12.Replace("World", "There");
Console.WriteLine($"替换字符串:{result1}");
// 5. 分割字符串
string str13 = "Hello,World,World";
string[] parts = str13.Split(',');
Console.WriteLine($"分割字符串:{string.Join("|", parts)}");
// 6. 截取子字符串
string substr = str12.Substring(0, 5);
Console.WriteLine($"截取子字符串:{substr}");
// 7. 访问单个字符
Console.WriteLine($"访问单个字符:{str1[0]}");
// 8. 字符串反转
string rev = new string(str12.Reverse().ToArray());//反转
Console.WriteLine($"字符串反转:{rev}");
// 9. 转换大小写
string upper = str12.ToUpper();
string lower = str12.ToLower();
Console.WriteLine("转换大小写");
Console.WriteLine(upper);
Console.WriteLine(lower);
// 10. 格式化字符串
string result2 = string.Format("{0} {1}", str1, str2);
Console.WriteLine("格式化字符串:" + result1);
枚举类型:非常重要–工作
建议变量具有相关性比如一周有星期一到日,颜色:xxx–xxx,将名字映射到整数变量,如功能按键的使用,将变量映射到对应功能按键的名字
特点 | 说明 |
---|---|
类型 | 值类型,不是数据结构 |
成员值 | 只能取定义的枚举成员值 |
默认值 | 从 0 开始自动递增 |
可读性 | 提高代码可读性 |
switch | 可在switch语句中使用 |
运算 | 可以比较,不能算术运算 |
继承 | 继承自System.Enum |
编译 | 编译为基础整数类型 |
/*举例*/
// 声明一个自定义枚举类型,用于表示一周的7天
enum Weekday
{
// 定义枚举成员 Monday,代表星期一
// 默认情况下,第一个枚举成员的值为 1
Monday = 1,
// 定义枚举成员 Tuesday,代表星期二
// 未手动赋值的情况下,默认自动递增,所以 Tuesday 的值为 2
Tuesday,
// 定义枚举成员 Wednesday,代表星期三
// 值为 3
Wednesday,
// 定义枚举成员 Thursday,代表星期四
// 值为 4
Thursday,
// 定义枚举成员 Friday,代表星期五
// 值为 5
Friday,
// 定义枚举成员 Saturday,代表星期六
// 值为 6// 声明一个 Weekday 类型的变量 day,用于存储枚举值
Weekday day;
// 将变量 day 赋值为 Saturday 枚举成员
// Saturday 对应的值是 5
day = Weekday.Saturday;
// 格式化输出 day 变量和强制转换后的 int 值
// day 打印为字符串"Saturday"
// 强制转换后打印整数 5
Console.WriteLine("{0}和{1}", day, (int)day);
Saturday,
// 定义最后一个枚举成员 Sunday,代表星期日
// 值为 7
Sunday
}
总结
-
整型(int、byte等) 用于表示整数值。不同的整型表示数值范围不同。
浮点型(float、double) 用于表示小数值。float精度较低,double精度较高。
字符串(string) 表示文本字符串,是引用类型,支持各种字符串操作。
字符型(char) 表示单个字符,是值类型。
布尔型(bool) 表示真或假两个逻辑状态。
枚举类型(enum) 定义一组命名常量,提高代码可读性。