7.16 C#学习笔记

字符串

1.如何获取字符串中的每一个字符  通过遍历

        //遍历:for    foreach

for (int i = 0; i < str.Length; i++)
{
    Console.Write(str[i]);
}
Console.WriteLine();


foreach (var item in str)
{
    Console.WriteLine(item);
}

2.如何让获取字符串中字符的长度

Console.WriteLine(str.Length);

字符串常用方法

1.ToLower   将字符串中的大写字母转变为小写字母,其他字符不受影响,有返回:返回一个全新的字符串,原字符串不受影响

string str1=str.ToLower();
Console.WriteLine(str);
Console.WriteLine(str1);

2.ToUpper   将字符串中的小写字母转变为大写字母,其他字符不受影响,有返回:返回一个全新的字符串,原字符串不受影响

string str2 = str.ToUpper();
Console.WriteLine(str2);

3.Trim  去除字符串中两边的空格,返回一个全新的字符串,原字符串不受影响

string str3 = str.Trim();
Console.WriteLine(str3);

4.TrimStart     去除字符串中前面的空格,返回一个全新的字符串,原字符串不受影响

string str4 = str.TrimStart();
Console.WriteLine(str4);

5.TrimEnd       去除字符串中后面的空格,返回一个全新的字符串,原字符串不受影响

string str5 = str.TrimEnd();
Console.WriteLine(str5);

6.Contains  判断字符串中是否包含某个子字符串,返回布尔值(有:True   没有:False)

Console.WriteLine(str.Contains("ksk"));
//输出:True

7.运算符“+”:在字符串中是拼接符

Console.WriteLine("123"+"456");
//输出为:123456

8.字符串也可以判断是否相等,比较的流程是按照顺序一个一个字符的比较

     if ("123" == "1 23")
     {
         Console.WriteLine("是");
     }
     else {
         Console.WriteLine("否");
     }
//输出:否

9.Split 分割  通过指定的字符分割字符串    返回一个数组

string userstr=Console.ReadLine();
string[] strarr = userstr.Split(',');
foreach (var item in strarr) {
    Console.WriteLine(item);
}

10.Join  通过指定字符  转换为字符串

string s=String.Join(",", strarr);
Console.WriteLine(s);

11.Remove    移除指定字符

//从索引4位置开始,删除2个数据
string t = userstr.Remove(4, 2);
Console.WriteLine(t);

goto语句

goto语句可以控制代码的执行顺序。

1.给代码的位置打一个标记,标记的命名自定义

2.使用goto语句,让代码回到标记的位置

//1.给代码的位置打一个标记,标记的命名自定义
inputsex:
    Console.WriteLine("请输入性别:");
    string str=Console.ReadLine();
    if (str == "男")
    {
        Console.WriteLine("男性");
    }
    else if (str == "女")
    {
        Console.WriteLine("女性");
    }
    else {
        Console.WriteLine("输入错误,请重新输入");
    }
    //2.使用goto语句,让代码回到标记的位置
    goto inputsex;

注意:一般情况下使用goto进行内容验证,但是goto语句会造成代码的可读性变差,建议少用。

函数的参数数组

函数中的数据可以是单个的数据,也可以是一组数据(数组)。

以下是一个函数参数数组的实例:

static void Main(string[] args)
{
    string str=Console.ReadLine();
    string[] strarr = str.Split(" ");//字符串分割
    int[] numarr= new int[strarr.Length];
    for (int i = 0; i < numarr.Length; i++) {
        numarr[i] = int.Parse(strarr[i]);
    }    
    int[] a = GetMath(numarr);//方法调用
    foreach (int i in GetMath(numarr))//访问输出,进行遍历
    {
        Console.WriteLine(i);
    }
}
//自己定义的一个函数
//定义一个求最大值,最小值,平均值的方法
 static int[] GetMath(int[] numarr) 
 { 
    int max = numarr[0];
    int min = numarr[0];
    int aver = 0;
    int sum =0;

    for (int i =1; i < numarr.Length; i++)
    {   //最大值
        if (max < numarr[i])
        {
            max = numarr[i];
        }
        //最小值
        if (min > numarr[i]) {
        min= numarr[i];
        }
    }
        //平均值
        for (int i = 0;i < numarr.Length; i++)
        {
        sum += numarr[i];
        }
    aver=sum/numarr.Length;
    int[] result = new int[3] { max,min,aver};
    return result;
}

这里的输出(最大值,最小值,chakan 平均值)我们通过构建一个整数数组将它们存放进来,返回这个整数数组,调用方法是再通过遍历数组中的元素才能看到最大值,最小值,平均值。如果返回值的类型不同,还无法存放在同一个类型数组中。

这不仅增加了程序的代码量,而且也不便于我们查看和二次使用。有没有方法可以解决这些问题,这就要用到out和ref关键字。

out与ref关键字

refout是用于按引用传递参数的关键字,允许方法直接操作调用者的变量。

对于不同类型的多返回值,我们就可以用out或ref。

out的主要作用是传出数据,因此传入的时候可以选择性的初始化,但是在方法中必须对其赋值。

以下是out的应用实例:

static void Main(string[] args)
{
    Console.WriteLine("请输入数据(以空格隔开):");
    string str=Console.ReadLine();
    string[] num =str.Split(' ');
    int[] numarr=new int[num.Length];
    for (int i = 0; i < numarr.Length; i++)
    {
        numarr[i] = int.Parse(num[i]);
    }
    //out的主要作用是传出数据,因此传入的时候可以选择性的初始化,但是在方法中必须对其赋值。
     int max;
     int min;
     double ping;
     int sum;
     Math(numarr, out max, out min, out sum, out ping);
     Console.WriteLine($"最大值为:{max} 最小值为:{min} 总和为:{sum} 平均值为:{ping}");
}
//自定义方法:求最大值,最小值,总和,平均值。
static void Math(int[] numarr, out int max, out int min, out int sum, out double ping) { 
    max=numarr[0]; min=numarr[0]; sum=numarr[0];
    for (int i = 1; i < numarr.Length; i++) {
        if (max < numarr[i]) { 
            max= numarr[i];
        }
        if (min > numarr[i]) 
        { 
            min= numarr[i]; 
        }
        sum += numarr[i];
    }
    ping=sum/numarr.Length;
    
}

ref的主要作用是传入数据,因此在传入数据之前必须要对其赋值

以下是ref的应用实例:

static void Main(string[] args)
{
    Console.WriteLine("请输入数据(以空格隔开):");
    string str=Console.ReadLine();
    string[] num =str.Split(' ');
    int[] numarr=new int[num.Length];
    for (int i = 0; i < numarr.Length; i++)
    {
        numarr[i] = int.Parse(num[i]);
    }
    //ref   主要作用是传入数据,因此在传入数据之前必须要对其赋值
    int max=0;
    int min=0;
    double ping = 0;
    int sum = 0;
    Math(numarr, ref max, ref min, ref sum, ref ping);
    Console.WriteLine($"最大值为:{max} 最小值为:{min} 总和为:{sum} 平均值为:{ping}");



}
//自定义方法:求最大值,最小值,总和,平均值。
static void Math(int[] numarr, ref int max, ref int min, ref int sum, ref double ping) { 
    max=numarr[0]; min=numarr[0]; sum=numarr[0];
    for (int i = 1; i < numarr.Length; i++) {
        if (max < numarr[i]) { 
            max= numarr[i];
        }
        if (min > numarr[i]) 
        { 
            min= numarr[i]; 
        }
        sum += numarr[i];
    }
    ping=sum/numarr.Length;
    
}

注意:out与ref的区别
1.out传递到参数,在方法中必须赋值,在声明变量是可以赋值也可以不赋值。
2.ref传递的参数,在声明时必须赋值,在方法中可以赋值,也可以不赋值。
 

你可能感兴趣的:(c#,visual,studio)