C#自我总结7

命名空间

可以认为类是属于命名空间的。
如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的命名空间。
在一个项目中引用另一个项目的类,先添加引用,再引用命名空间。
添加引用
引用命名空间

值类型和引用类型

值类型和引用类型在内存上存储的地方不一样。
在传递值类型和传递引用类型的时候,传递的方式不一样。
值类型:int、double、bool、char、decimal、struct、enum
引用类型:string、自定义类、数组
值类型的值是存储在内存的栈中,引用类型存储在内存的堆中。引用类型其实也用到了栈,但是在栈中存储的是堆的地址,堆中存储的是数据。

字符串

可以将字符串看做是char类型的一个只读数组。
ToCharArray();将字符串转换为char数组。
new string(char []chs);能够将char数组转换为字符串。

字符串的不可变性

当给一个string类型重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值,也就是栈的值不会变。
当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
当两个string类型的值赋值为同一数据时,其栈的地址不同,而堆的地址相同。

string s1 = "张三";
string s2 = "张三";

栈的地址和堆的地址

字符串的使用方法

1.Length:获得当前字符串中字符的个数。

string name = "张三";
Console.WriteLine(name.Length);//输出2

2.ToUpper():将字符串转换成大写形式。

string str = "ADCadc";
Console.WriteLine(str.ToUpper());//输出ADCADC

3.ToLower():将字符串转换成小写形式。
4.Equals(s2, StringComparison.OrdinalIgnoreCase):比较两个字符串,能忽略大小写。

//输出两者不同
string str1 = "ADC";
string str2 = "adc";
if (str1.Equals(str2))
{
    Console.WriteLine("两者相同");
}
else
{
    Console.WriteLine("两者不同");
}
//输出两者相同
string str1 = "ADC";
string str2 = "adc";
if (str1.Equals(str2,StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine("两者相同");
}
else
{
    Console.WriteLine("两者不同");
}

5.Split():分割字符串,返回字符串类型的数组。

string s = "a b   dfdg  _  + = ,,,fdg";
//想要除去的字符
char[] chs = { ' ', '_', '+', '=', ',' };
//当不加StringSplitOptions.RemoveEmptyEntries时,原来除去掉的字符会转换为空字符,加的时候可直接去掉空字符。
string[] str = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
for(int i = 0; i < str.Length; i++)
{
    Console.WriteLine(str[i]);
}

结果
6.Replace(string oldValue,string newValue):将字符串中的出现oldValue的地方替换为newValue。

string str1 = "钟离";
string str2 = str1.Replace("钟离", "**");
Console.WriteLine("原神璃月之神--摩拉克斯,现在化名为{0}", str2);

结果
7.Substring(int startIndex,int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。

string str = "今天天气好晴朗,处处好风光";
Console.WriteLine(str.Substring(0, 8));

8.Contains(string value)判断字符串中是否含有子串value。

string str = "今天天气好晴朗,处处好风光";
if (str.Contains("天气"))
{
    Console.WriteLine("里面有天气,替身能力发动!");
}
else
{
    Console.WriteLine("里面没有天气");
}

结果
9.StartWith(string value)判断字符串是否以子串value开始。

string str = "今天天气好晴朗,处处好风光";
if (str.StartsWith("这是替身攻击"))
{
     Console.WriteLine("'这是替身攻击'是这个字符串的开头");
}
else
{
      Console.WriteLine("你什么时候形成了'这是替身攻击'是这个字段开头错觉");
}

在这里插入图片描述
10.EndWith(string value)判断字符串是否以子串value结束。
11.IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1。

string str = "今天天气好晴朗,处处好风光";
Console.WriteLine(str.IndexOf("天"));//输出1

12.string.IsNullOrEmpty():判断是否为空字符或null。

//输出这是空字符或null
string str1 = null;
if (string.IsNullOrEmpty("str1"))
{
    Console.WriteLine("这不是一个空字符");
}
else
{
    Console.WriteLine("这是空字符或null");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值