C#基础语法一文通(三)

234 阅读3分钟
在VS code中创建C#项目
  1. ctrl+shift+y打开控制台
  2. 选到终端
  3. cd到您想创建项目的文件夹
  4. 如果新建 可 mkdir xxxxxx 新建
  5. dotnet new console
  6. 此时创建好了一个项目,program.cs中有了一个hello world的模板程序
  7. 开始秀吧!

一. 数据类型

数据类型的分类:
①值类型:存数据
②引用类型:存地址(引用类型传递的是地址(钥匙),不用返回值)

二. 内存的分配

三. 数组传参传地址

所以,无返回值即可改变数组!(但方法中不要重新给数组换地址!!)

例:
static void Main()
        {
            int[] arr={1};
            Sum(arr);
            Console.WriteLine(arr[0]);
        }
        private static void Sum(int[] arr){
            arr[0]=2;
        }
    }

四. 方法的 值参数,引用参数,输出参数

  • 值参数:传递值 //作用:传递信息
  • 引用参数(ref):传递引用的内存地址(钥匙) //作用:从方法内部改变外部变量
        static void Main()
        {
            int a =1;
            Fun(ref a);
        }
        private static void Fun(ref int a)
        {
        }
· 输出参数(out):按引用传递
//作用:返回结果 方法(函数)除了返回值,还可以返回无数个out.
        static void Main()
        {
            int a =1;
            Fun(out a);
        }
        private static void Fun(out int a){
            a=2;
        }
与引用参数(ref)的区别:
①: 输出参数(out)调用过程必须对其赋值;
②: 输出参数(out)传递之前可以不赋值;

五. 数据类型尝试转换

int.TryParse(要转换的string,out 转换结果) 返回值:转换成功否;
            int a;
            bool sc=int.TryParse(Console.ReadLine(),out a);

六. 拆装箱

装箱操作存储方法:
装箱:
拆箱:
避免拆装箱:

例:
所以拼接字符串不要
应该

七. 字符串池

八, 可变字符串
由于字符串池原理,字符串拼接会产生大量垃圾,由此引出可变字符串
可变字符串写法
StringBuilder builder=newStringBuilder([建议起始字符空间大小]);//只是建议大小,超过行,但是会产生垃圾
using System.Text;

StringBuilder builder=new StringBuilder(10);
            for(int i=0;i<10;i++){
                builder.Append(i);
            }
            String str=builder.ToString();
可变字符串方法:
Append(要添加的值):向字符串中尾部加入字符
Insert(插入位置,要添加的值): 在指定位置之前添加字符
Replace("老值","新值");替换值
Remove(起始位置,删除长度);删除值
StringBuilder builder=new StringBuilder(15);
            for(int i=0;i<10;i++){
                builder.Append(i);
            }
            builder.Insert(9,"孙悟空");
            builder.Replace("悟空","猴子");
            builder.Remove(12,1);
            String str=builder.ToString();

九, 字符串方法

1.str.ToCharArray() //将字符串转化为字符数组
char[] arr=str.ToCharArray(); //返回字符数组
2.str.Insert(起始位置,"新字符串"); //从起始位置之前插入字符串
str=str.Insert(2,"孙悟空"); //返回新字符串
3. str.Contains("字符串"); //是否含有某个字符串
bool have=str.Contains("孙"); //返回布尔值
4,str.ToLower(); //字符串全部小写
str=str.ToLower(); //返回新字符串
5,str.ToUper(); //字符串全部小写
6.str.IndexOf("?");//字符串中第一个?的位置
int a=str.IndexOf("孙"); //返回int类型索引值
7, str.Substring (起始位置,[长度]);//用于截取字符窜的某一部分
str=str.Substring (3,2);//返回新的字符串
8. str.Trim(); //去除首尾空格
str=str.Trim(); //返回处理后的字符串
9.str.Split("断点字符"); //用断点字符做断点,将字符串,拆分成若干字符串数组.
string[] strs=str.Split("b"); //返回字符串数组
10.str.Replace("旧字符串","新字符串");//将旧字符串替换为新字符串
str=str.Replace("悟空","猴子"); //返回替换后的字符串
11.str=string.Join("中间间隔字符",字符串数组); //将两个字符串合并,返回新字符串
(注意此方法是string来调用)