【C#】.Net基础语法二
最佳答案 问答题库648位专家为你答疑解惑
目录
一、字符串(String)
【1.1】字符串创建和使用
【1.2】字符串其他方法
【1.3】字符串格式化的扩展方法
【1.4】字符串空值和空对象比较
【1.5】字符串中的转移字符
【1.6】大写的String和小写的string
【1.7】StringBuilder类的重要性
二、数组(Array)
【2.1】声明数组
【2.2】赋值数组
【2.3】使用数组
【2.4】区分值类型变量和引用类型变量
三、动态数组
【3.1】动态数组简单应用
【3.2】动态数组常用属性和方法
四、常量
五、枚举(Enum)
【5.1】枚举类型声明
【5.2】常见的系统枚举
【5.3】枚举类型的转化
一、字符串(String)
【1.1】字符串创建和使用
您可以使用以下方法之一来创建 string 对象:
-
通过给 String 变量指定一个字符串
-
通过使用 String 类构造函数
-
通过使用字符串串联运算符( + )
-
通过检索属性或调用一个返回字符串的方法
-
通过格式化方法来转换一个值或对象为它的字符串表示形式
static void TestCode()
{string email = "xxxxxx@qq.com";// 获取指定字符串第一个字符的索引int index1 = email.IndexOf("@"); // 返回索引int index2 = email.IndexOf("qq.com"); // 返回起始索引int index3 = email.IndexOf("qq.net"); // 如果没有找到返回-1Console.WriteLine($"{index1} {index2} {index3}"); // 打印结果:6 7 -1
// 获取字符串的长度int lenght = email.Length;Console.WriteLine($"字符串长度:{lenght}"); // 打印结果:13
// 字符串截取Substring方法string str1 = email.Substring(0, 6);Console.WriteLine($"截取内容:{str1}"); // 打印结果:xxxxxxstring str2 = email.Substring(0, email.IndexOf("@"));Console.WriteLine($"截取内容:{str2}"); // 打印结果:xxxxxxstring str3 = email.Substring(email.IndexOf("@") + 1);Console.WriteLine($"截取内容:{str3}"); // 打印结果:qq.com
// 字符串比较string strName1 = "jack";string strName2 = "jack";string strName3 = "jddd";Console.WriteLine(strName1 == strName2); // 打印结果:TrueConsole.WriteLine(strName1 == strName3); // 打印结果:FalseConsole.WriteLine("strName1 == strName2:" + (strName1 == strName2)); // 打印结果:strName1 == strName2:TrueConsole.WriteLine("strName1 == strName3:" + (strName1 == strName3)); // 打印结果:strName1 == strName3:True// Equals是一个虚方法Console.WriteLine(strName1.Equals(strName2)); // 打印结果:True Console.WriteLine(strName1.Equals(strName3)); // 打印结果:False// 提示:==或Equals方法默认智能比较“值类型”或者“字符串”类型,对象类型(引用类型)是不能使用这种比较方法的。string str4 = "askjdhASDAasd";// 字符串转换为小写Console.WriteLine(str4.ToLower()); // 打印结果:askjdhasdaasd// 字符串转换为大写Console.WriteLine(str4.ToUpper()); // 打印结果:ASKJDHASDAASD// 字符串去掉前后空格Console.WriteLine(str4.Trim()); // 打印结果:askjdhASDAasd// 字符串分割和拼接// Split():基于数组中的字符将字符串拆分为多个子字符串。// string.Join():串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。string strVal = "AB CD EF HU 00";Console.WriteLine(strVal);
// 将字符串进行分割string[] strArray = strVal.Split(' ');foreach(string val in strArray){Console.WriteLine(val + " ");}
// 将字符串数组重新拼接string strJoin = string.Join("_", strArray);Console.WriteLine(strJoin);
// 字符串替换// Replace(): 返回一个新字符串,其中此实例中出现的所有指定 Unicode 字符都替换为另一个指定的 Unicode 字符。string strVal2 = "AB CD EF HU 00";Console.WriteLine(strVal2);string strVal3 = strVal2.Replace(' ', '@');Console.WriteLine(strVal3);
Console.Read();
}
【1.2】字符串其他方法
【1.3】字符串格式化的扩展方法
static void TestCode()
{Console.WriteLine(string.Format(" {0:C3}", 5000)); // 打印结果: ¥5,000.000Console.WriteLine(string.Format(" {0:D3}", 5000)); // 打印结果: 5000Console.WriteLine(string.Format(" {0:F3}", 5000)); // 打印结果: 5000.000Console.WriteLine(string.Format(" {0:N}", 250000)); // 打印结果: 250,000.00Console.WriteLine(string.Format(" {0:P2}", 25000)); // 打印结果: 2,500,000.00%Console.WriteLine(string.Format(" {0:P3}", 25000)); // 打印结果: 2,500,000.000%Console.WriteLine(string.Format(" {0:P3}", 0.25755)); // 打印结果: 25.755%Console.WriteLine(string.Format(" {0:X000}", 12)); // 打印结果: C
double sum = 2.1231241;Console.WriteLine(sum.ToString("0.00")); // 打印结果:2.12Console.WriteLine(sum.ToString("0.000")); // 打印结果:2.123
Console.Read();
}
【1.4】字符串空值和空对象比较
static void TestCode()
{// 这个“空”字符串是占用空间的string str1 = "";
// 和 string str1 = "" 一样string str2 = string.Empty;
// 这个会有语法错误// string str3;
// 这个是存在一个赋值过程的,不占用空间string str4 = null; // 如果这样直接使用会出现错误,为引用的对象
// 判断字符串为空值if (str1.Length == 0) ;if (str1 == string.Empty) ;if (str1 == "") ;// 判断字符串为空if (str1 == null) ;
// 推荐使用方法// 如果 true 参数为 value 或 null,或者如果 Empty 仅由空白字符组成,则为 value。string.IsNullOrWhiteSpace(str1);
}
【1.5】字符串中的转移字符
-
转移字符:具有特定含义,不用于字符原有的意思。
-
常用反斜杠:【\\】【@】
static void TestCode()
{string path1 = "C:\\DB\\Test.txt";string path2 = @"C:\DB\Test.txt";
Console.WriteLine(path1); // C:\DB\Test.txtConsole.WriteLine(path2); // C:\DB\Test.txtConsole.Read();
}
其他转移字符:
【1.6】大写的String和小写的string
-
String是.Net Framework的类(在C#的IDE中不会显示颜色)。
-
string是C#的关键字,也就是String类的别名,表示一种数据类型,映射为.Net Framwork中的String。
-
使用string时编译器会把它编译成String。
-
string关键字,不能作类、结构、枚举、常量、方法、属性的名称,而String不是关键字,可以作为名称。
【1.7】StringBuilder类的重要性
static void TestCode()
{string data = "";data += "AB";data += "CD";data += "EF";Console.WriteLine(data);// 以上的程序执行过程:每次拼接都会重新开辟一个新的空间来重新存储组合后的值。
// 解决方式:可以定义可变字符串,实现字符串的追加。// 常用的方法:Append、Insert、Remove、AppendFormat、clear..等。// 使用:如果高频的字符串拼接中首选,普通的简单拼接依然可以使用前面的方法。StringBuilder sb = new StringBuilder();sb.Append("AB"); // 追加sb.Append("BC"); // 追加sb.Append("EF"); // 追加Console.WriteLine(sb.ToString());
sb.Clear(); // 清空for(int i = 0; i < 3; i++){Console.Write($"请输入第{i + 1}个数据: ");sb.Append(Console.ReadLine());}Console.WriteLine(sb.ToString());
sb.Clear(); // 清空sb.Insert(0, "AAAA"); // 插入sb.Insert(sb.Length, "BBBB"); // 插入Console.WriteLine(sb.ToString());
sb.Remove(0, 4); // 移除Console.WriteLine(sb.ToString());
Console.Read();
}
二、数组(Array)
数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。
数组基本要素包含:
-
标识符:数组的名称。
-
元 素:存放的数据。
-
类 型:元素的数据类型。
-
下 标:元素的索引(从0开始)。
【2.1】声明数组
datatype[] arrayName;
// datatype 用于指定被存储在数组中的元素的类型。
// [ ] 指定数组的秩(维度)。秩指定数组的大小。
// arrayName 指定数组的名称。
【2.2】赋值数组
// 赋值方法一:通过使用索引号赋值给一个单独的数组元素
double[] balance = new double[10];
balance[0] = 4500.0;
// 赋值方法二:可以在声明数组的同时给数组赋值
double[] balance = { 2340.0, 4523.69, 3421.0};
// 赋值方法三:可以创建并初始化一个数组
double[] balance = { 2340.0, 4523.69, 3421.0};
// 赋值方法四:以省略数组的大小
double[] balance = { 2340.0, 4523.69, 3421.0};
// 赋值方法五:可以赋值一个数组变量到另一个目标数组变量中
int [] marks = new int[] { 99, 98, 92, 97, 95};
int[] score = marks;
【2.3】使用数组
// 使用for循环遍历
static void CodeTest()
{int[] scoreArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };for (int i = 0; i < scoreArray.Length; i++){Console.Write(scoreArray[i] + " "); // 打印结果:1 2 3 4 5 6 7 8 9 10}
}
// 使用foreach循环遍历
static void CodeTest()
{int[] scoreArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };foreach(int val in scoreArray){Console.Write(val + " "); // 打印结果:1 2 3 4 5 6 7 8 9 10}
}
数组中常用的方法:
【2.4】区分值类型变量和引用类型变量
-
值类型变量,又被称为【基本数据类型变量】
-
引用类型变量,又被称为【对象类型变量】
值类型代码:
static void CodeTest()
{int A = 10;int B = 20;Console.WriteLine("A: " + A); // 10Console.WriteLine("B: " + B); // 20Console.WriteLine("----------------------");int C = A;C += 100;Console.WriteLine("C: " + C); // 110Console.WriteLine("----------------------");Console.WriteLine("A: " + A); // 10Console.WriteLine("B: " + B); // 20
}// 值类型变量在传值时,传递的是变量的”副本“,而不是变量本身,变量修改后互相没有影响。
// 常见的值类型:
// int、float、double、decimal....等
引用类型代码:
static void CodeTest()
{int[] arrayA = { 10, 20 };Console.WriteLine("A: " + arrayA[0]); // 10Console.WriteLine("B: " + arrayA[1]); // 20Console.WriteLine("----------------------");int[] arrayC = arrayA;arrayC[0] += 100;Console.WriteLine("C: " + arrayC[0]); // 110Console.WriteLine("----------------------");Console.WriteLine("A: " + arrayA[0]); // 110Console.WriteLine("B: " + arrayA[1]); // 20
}// 引用类型变量在传值时,是将自己传递给他人,没有开辟新的控件 自己=变量地址/指针
// 常见引用类型:
// string字符串、数组、系统库中的各种类、自定义的类
注意:string字符串的底层是引用类型(.Net做了特殊包装,属于引用类型,但需要当值类型来使用)
三、动态数组
在C#中,ArrayList 是一个非泛型的对象集合,其大小会动态增加。它与Array相同,只是它的大小是动态增加的。
一个ArrayList可以用来添加未知数据,可能你并不知道的类型和数据的大小。
System.Collections 命名空间中包含的 ArrayList 类。ArrayList使用 new 关键字创建对象。
官方文档:ArrayList 类 (System.Collections) | Microsoft Learn
【3.1】动态数组简单应用
static void CodeTest()
{// 添加数据ArrayList arrayList = new ArrayList();arrayList.Add(1);arrayList.Add(2);arrayList.Add("New York");arrayList.Add("London");// 遍历for(int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 获取长度int arrayCount = arrayList.Count;// 转换为数组object[] objArray = arrayList.ToArray();// 添加数组string[] strS = { "AA", "BB", "CC", "DD" };arrayList.AddRange(strS);for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 查找某个元素bool bRet1 = arrayList.Contains("AA");bool bRet2 = arrayList.Contains("HH");// 指定位置插入元素arrayList.Insert(3, "插入值");for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();// 移除元素arrayList.Remove("插入值");arrayList.RemoveAt(2);for (int i = 0; i < arrayList.Count; i++){Console.Write(arrayList[i].ToString() + " ");}Console.WriteLine();arrayList.Clear();
}
【3.2】动态数组常用属性和方法
四、常量
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量,常量可以被当作常规的变量,只是它们的值在定义后不能被修改。
static void CodeTest()
{// 定义变量int value = 10;value = 100; // 变量是可以被修改的。// 定义常量const int VALUE = 10;VALUE = 100; // 报错了:赋值号左边必须是变量、属性和索引器。
}
五、枚举(Enum)
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的,C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
枚举作用:可以用来定义 “有限个变量值”,方便选择使用,避免出错。
枚举特点:可以表示一组描述性的名称,还可以有对应的 “整数值”。
【5.1】枚举类型声明
enum <enum_name>
{ enumeration list
};// enum_name 指定枚举的类型名称。
// enumeration list 是一个用逗号分隔的标识符列表。
【5.2】常见的系统枚举
namespace System
{// 摘要: // 指定一周中的某天。[Serializable][ComVisible(true)]public enum DayOfWeek{Sunday = 0,Monday = 1,Tuesday = 2,Wednesday = 3,Thursday = 4,Friday = 5,Saturday = 6,}
}// 结合代码:
static void CodeTest()
{DayOfWeek week = DayOfWeek.Friday;switch (week){case DayOfWeek.Friday:Console.WriteLine("今天是星期日");break;case DayOfWeek.Monday:Console.WriteLine("今天是星期一");break;case DayOfWeek.Saturday:Console.WriteLine("今天是星期二");break;case DayOfWeek.Sunday:Console.WriteLine("今天是星期三");break;case DayOfWeek.Thursday:Console.WriteLine("今天是星期四");break;case DayOfWeek.Tuesday:Console.WriteLine("今天是星期五");break;case DayOfWeek.Wednesday:Console.WriteLine("今天是星期六");break;default:break;}
}
【5.3】枚举类型的转化
枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0。
// 比如说:
enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
=
enum Days { Sun = 0, Mon, tue, Wed, thu, Fri, Sat };
-
获取枚举的常量名
Days nDay = Days.Mon;
-
获取枚举类型的常量值
int iDay = Convert.ToInt32(Days.Mon);
-
通过字符串获取枚举类型的常量名
string str = "Wed";
Days toiDay = (Days)Enum.Parse(typeof(Days), str);
-
通常数值获取枚举类型的常量值
int iVal = 2;
string tosDay = Enum.GetName(typeof(Days), iVal);
-
通过枚举类型,获取所有常量名的字符串数组
string[] tosDays = Enum.GetNames(typeof(Days));
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"【C#】.Net基础语法二":http://eshow365.cn/6-12619-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 怒刷LeetCode的第8天(Java版)
- 下一篇: 大数据Flink(八十一):SQL 时区问题