C#作用域、Random随机数类、DateTime时间类、字符串String属性、ArrayList动态数组

ModelEngine·创作计划征文活动 10w+人浏览 1.7k人参与

*作用域:

作用域:变量可以使用的一个范围

局部变量 :只能够在局部使用

全局变量:可以在任何地方使用

{ }他就表示一个作用域

*Random随机数类:

 //Random 随机数
 //1.创建一个随机数的队列,并指定种子
 //如果没有指定种子,会默认使用当前系统的一个时间作为种子去使用
 //变量名 r 随机自定义
 /定义一个 float 数组,存储 5 个随机数,找出其中的最大值并输出
 //2.获取随机数
 r.Next();
 Console.WriteLine(r.Next());
 Console.WriteLine(r.Next()); 
 //2.2可以给Next()里面传递参数 指定随即参数的范围
 Console.WriteLine(r.Next(10));//小于指定的值非负整数 0~9  写一个参数的时候默认是从0开始的 到 你写的范围结束
 Console.WriteLine(r.Next(10,20));//大于等于10小于20 10~19 包左不包右 左闭右开 [10,20)
 //打印出来是相同的
 Random r1 = new Random(11);
 Random r2 = new Random(11);
 Console.WriteLine(r1.Next()); 
 Console.WriteLine(r2.Next());
 //10个随机数  1~100
 //这个例子打印出来是10个相同的数字,因为循环太快了,使用相同的时间作为种子,所以随机数都一样
 for (int i = 0; i < 10; i++)
 {
     Random r4 = new Random();
     Console.WriteLine(r4.Next(1,101));
 }
 //解决方案
 Random r5 = new Random();
 for (int i = 0; i < 10; i++)
 {              
     Console.WriteLine(r5.Next(1, 101));
 }
 //GUTD (全球唯一标识符)
 //GUID格式 xxxxxxxx- xxxx-xxxx-xxxx - xxxxxxxxxxxx 其中每个x是0 - 9 a - f范围的一个
 //675ee030-8dc9- 4b9d - a200f967bdc61834
 Console.WriteLine(Guid.NewGuid());

*DateTime时间类:

//DateTime类 用来进行时间操作的
//DateTime类型的变量用于存储一个时间
//DateTime.Now属性 用于获取当前系统时间
DateTime time = DateTime.Now;
Console.WriteLine(time);
//可以通过时间对象的属性获取时间的详情信息
Console.WriteLine("年:" + time.Year);
Console.WriteLine("月:" + time.Month);
Console.WriteLine("日:" + time.Day);
Console.WriteLine("时:" + time.Hour);
Console.WriteLine("分:" + time.Minute);
Console.WriteLine("秒:" + time.Second);
Console.WriteLine("毫秒:" + time.Millisecond);
​
//DayOfWeek是一个枚举类型,获取周几
Console.WriteLine("今天是周" + time.DayOfWeek);
//0表示周日 1表示周一 2表示周2
Console.WriteLine("今天是周" + (int)time.DayOfWeek);
Console.WriteLine("今天是今年的第几天:" + time.DayOfYear);
​
//日期转成字符串类型
Console.WriteLine(time.ToString());//2025/11/10 16:05:19
//字符串转成日期类型
string strDate = "2025年11月10日";
Console.WriteLine(DateTime.Parse(strDate));//2025/11/10 0:00:00
​
//DateTime的ToString方法可以接收一个参数,用于时间的格式化
Console.WriteLine(time.ToString("G"));//2025/11/10 16:05:19
Console.WriteLine(time.ToString("s"));//2025-11-10T16:05:19
Console.WriteLine(time.ToString("d"));//2025/11/10
Console.WriteLine(time.ToString("D"));//2025年11月10日
​
//y 表示年
//M 表示月份
//d dd 表示日
//ddd dddd表示周
//h H 表示小时
//mm 表示分钟
//s 表示秒
//fff 表示毫秒
​
Console.WriteLine(time.ToString("yy")); //25,年份后两位
Console.WriteLine(time.ToString("yyyy")); //2025 完整年份
Console.WriteLine(time.ToString("今年是yyyy年")); //可以和普通字符串连起来用
Console.WriteLine(time.ToString("M"));//7月4日
Console.WriteLine(time.ToString("MM"));//07
Console.WriteLine(time.ToString("MMM"));//7月
Console.WriteLine(time.ToString("MMMM"));//七月
Console.WriteLine(time.ToString("d"));//2025/7/4
Console.WriteLine(time.ToString("dd"));//几号
Console.WriteLine(time.ToString("ddd"));//周几
Console.WriteLine(time.ToString("dddd"));//星期几
Console.WriteLine(time.ToString("现在的小时是h"));//12小时制
Console.WriteLine(time.ToString("现在的小时是H"));//24小时制
Console.WriteLine(time.ToString("分钟m"));
Console.WriteLine(time.ToString("mm"));//分钟
Console.WriteLine(time.ToString("秒s"));//秒
Console.WriteLine(time.ToString("ss"));//秒
Console.WriteLine(time.ToString("fff"));//毫秒
​
//判断某年是否为一个闰年
//闰年:能被4整除但是不能被100整除或者是能被400整除
bool re = DateTime.IsLeapYear(2025);
Console.WriteLine(re);//fase
Console.WriteLine(DateTime.IsLeapYear(2024));//true

*字符串String属性:

 //字符串属性
 string a = "abcdy";//0 1 2 3 4

 //1.可以通过索引来获取字符串当中的某一个字符  索引:从0开始编号的
 //[0] 获取到字符串当中第一个字符 [1]获取到第二个字符
 Console.WriteLine(a[0]);//a
 char c = a[4];
 Console.WriteLine(c);//y
 for (int i = 0; i < 5; i++)
 {
     Console.WriteLine(a[i]);//a b c d y
 }

 //2.获取字符串的长度  变量名.Length
 string a1 = "qwertyuiop";
 Console.WriteLine(a1.Length);//10
 for (int i = 0; i < a1.Length; i++)
 { Console.WriteLine(a1[i]); }        

 //字符串内置了很多API(函数)可以让我们灵活处理字符串
 string s1 = "abc";
 string s2 = "张紫诺";
 string s3 = "123";

 //1. 变量类型.Concat()   拼接字符串
 string s4 = string.Concat(s1, s2, s3);
 Console.WriteLine(s4);

 //2. 变量类型.Contains()   判断参数字符串是否出现在原字符串当中
 bool b = s2.Contains("紫诺");//只能输入字符串
 Console.WriteLine(b);//True
 //判断当前数字是否出现在字符串中
 string str1 = "74093758961284cvnlsdjflsdkj73281973";
 int index = 0;
 while (str1.Contains("1"))
 {
     if (str1[index] == '1')
     { Console.WriteLine(index);//10
         break; }
     index++;
 }

 //3. IndexOf()  从前往后查询字参数符串首次在原字串符中出当现的位置 索引0的位置 如果没有找到 会返回-1
 string str2 = "ABCabc123";
 Console.WriteLine(str2.IndexOf("a"));//3
 Console.WriteLine(str2.IndexOf("b",5));//-1   从5的位置开始往后找 找到就返回所在的位置 没有找到就返回-1
 string str3 = "ABCabc123b";
 Console.WriteLine(str3.IndexOf("b",5));//9

 //4. LastIndexOf()  从后往前查询参数字符串首次在原字符串当中出现的位置 索引的位置 如果没有找到 会返回-1
 Console.WriteLine(str3.LastIndexOf("b"));//9
 Console.WriteLine(str3.LastIndexOf("b",5));//4  从5的位置开始往前找 找到就返回所在的位置 没有找到就返回-1
 Console.WriteLine(str3.LastIndexOf("b", 3));//-1
 int aa = str3.LastIndexOf("b");
 Console.WriteLine(str3[aa]);
 string name = "张紫诺";

 //5. StartsWith()  判断原字符串时候以参数字符串开头
Console.WriteLine(name.StartsWith("张"));//True
 Console.WriteLine(name.StartsWith("张紫"));//True
Console.WriteLine(name.StartsWith("诺"));//False

 //6.Endswith()  判断原字符串是否以参数字符串结尾
 Console.WriteLine(name.EndsWith("诺"));//True
 Console.WriteLine(name.EndsWith("紫诺"));//True
 Console.WriteLine(name.EndsWith("张紫诺"));//True
 Console.WriteLine(name.EndsWith("张紫诺1"));//False

 //7. Insert()  在指定的位置插入字符串 生成新的字符串
 Console.WriteLine(name.Insert(2,"ZN"));//张紫ZN诺
 Console.WriteLine(name.Insert(3, "ZN"));//张紫诺ZN

 //8. Replace()  替换关键字
 string str4 = "张紫诺马帅";
 Console.WriteLine(str4.Replace("张","Z"));//Z紫诺马帅
 Console.WriteLine(str4.Replace("张", "****"));//****张紫诺
 string phoneNuber = "15139157676";
 string number= phoneNuber[3].ToString()+phoneNuber[4].ToString() +phoneNuber[5].ToString()+phoneNuber[6].ToString(); 
 Console.WriteLine(number);
Console.WriteLine(phoneNuber.Replace(number,"****"));

 //9. ToUpper()  将小写字母转换为大写字母
 string str5 = "ABCabc";
 Console.WriteLine(str5.ToUpper());

 //10. ToLower()  将大写字母转换为小写字母
 Console.WriteLine(str5.ToLower());

 //11. Remove()  删除指定的字符串
 Console.WriteLine(str4.Remove(1));//张//从索引为1的位置 后面的全部删除
 Console.WriteLine(str4.Remove(1,3));//张帅//从索引为1的位置开始删删除了3个

//12. String str = new string(new char[]{单个字符内容})  把字符数组转成字符串
//定义一个字符串数组
char[] chars = { 'A', 'B', 'C' };
string stri = new string(chars);
Console.WriteLine("转成为字符串内容为:" + stri);//ABC

//13. ToCharArray()  字符串转成字符数组
char[] chars2 = stri.ToCharArray();

//14. IsDigit()  指定字符串是否为十进制数字
 string r = "Today is 2023-10-05, temperature is 25℃";
 string num = "";
 foreach (char c in r)
 {
     // 判断当前字符是否为数字
     if (char.IsDigit(c))
     {
         num += c;
     }
 }
 Console.WriteLine("提取的数字字符串:" + num);

*ArrayList动态数组:

//ArrayList动态数组(一个集合),就是一个长度不固定并且存储数类型也不固定的数组是C#为我们封装好的类
//本质是一个object类型的数组
//可以存储任意类型的数据,数组的长度会根据存储内容的增加或减少进行改变
​
//普通数组的创建
int[] arr1 = new int[10];
int[] arr2 = new int[] { 1, 2, 3 };
arr1[0] = 666;
​
//动态数组的创建
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList() { "李易", "罗志", 666, true, new int[] { 1, 2, 3 } };
foreach (var item in list2)
{ Console.WriteLine(item); }
​
//普通数组获取数组的长度
Console.WriteLine(arr1.Length);
​
//动态数组获取数组的长度
Console.WriteLine(list2.Count);
​
//初始化ArrayList
ArrayList list = new ArrayList();
​
//核心特性
//动态扩容 
list.Capacity = 0;//预分配容量 刚开始没有长度 一般不用预分
//扩容机制:首次扩容为4,其他次每次扩容为原来长度的2倍
​
//混合类型存储,可以存储任意类型的对象
//变量名.Add()
//添加元素,末位添加,有序的(存入顺序和取出顺序一致)
list.Add(111);
list.Add("abc");
list.Add(true);
list.Add(new DateTime(2025, 7, 9));
list.Add("abc");
​
//变量名.Add()  向ArrayList 的最后位置添加数据
list2.Add("李云");//{ "李易", "罗志", 666, true, new int[] { 1, 2, 3 }, "李云" }; 
​
// 变量名.AddRange()  将一个集合的内容添加到ArrayList的尾部
int[] ints1 = { 1, 2, 3, 4, 5 };
list2.AddRange(ints1);//{ "李易", "罗志", 666, true, ints1, "李云", 1,2,3,4,5};
​
// 变量名.Insert()  在指定 索引的位置插入 数据
list.Insert(1, "aaa");
​
// 变量名.InsertRange()  在指定的 位置插入 集合的内容
list2.InsertRange(2, ints1);
​
// 变量名.Sort()  升序排序
list.Sort();
​
// 变量名.Reverse()  降序排序
list.Reverse();
​
// 变量名.Remove()  删除动态数组中指定的第一个数据
list.Remove(111);
​
// 变量名.RemoveAt()  删除指定索引位置的数据
list.RemoveAt(1);
​
// 变量名.RemoveRange()  删除指定范围的数据
list.RemoveRange(0, 2);
​
// 变量名.Clear()  清空数组,删除动态数组中所有的数据,并将Count重置为0
list.Clear();
​
// 变量名.Contains()  判断当前动态数组里面有没有对应的数据 有则返回true  没有返回false
list.Contains("abc");
​
// 变量名.IndexOf()  查找元素 首次 出现的 索引
list.IndexOf("abc");
​
// 变量名.LastIndexOf()  查找 最后一次 出现的 索引
list.LastIndexOf("abc");
​
// 变量名.GetRange()  从数组中截取对应的数据  返回一个新的ArrayList
// 参数1:开始截取的索引位置
// 参数2:截取的个数
ArrayList list4 = list2.GetRange(1, 3);
​
// 变量名.Reverse()  反转
list.Reverse();
​
//变量名.OfType<数据类型>().ToList()  从原集合中筛选出所有原本就是指定数据类型的元素,将其整理成一个该类型的 List 集合输出
ArrayList arrayList = new ArrayList { 1, "a", 2, "b", 3, "c", "aaa", "张三" };
List<string> ints = arrayList.OfType<string>().ToList();
foreach (var item in ints)
{ Console.WriteLine(item); }//迭代器遍历
​
//装箱与拆箱:
//ArrayList本质上是一个可以自动扩容的object数组
//由于用万物之父来存储数据,自然存在装箱拆箱。
//当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。
//性能问题
//装箱与拆箱
//存值类型时:会被装箱成Object,导致内存分配和性能损失
//存引用类型时:无装箱操作,但读取时仍需类型转换
ArrayList arrayList1 = new ArrayList { 1, "a", 2.0 };
int i = 1;
arrayList1[0] = i;//装箱:int(值类型)→ object(引用类型)
i = (int)arrayList1[0];//拆箱:object → int
int a = (int)arrayList1[0];
Console.WriteLine(i);//1
Console.WriteLine(a);//1

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值