C#
Mllllk
只想做自己想做的,学自己想学的
展开
-
C#值传递和引用传递
引用传递对于值类型它在进行值得传递的时候传递都是它的数值,但是引用类型传递的都是传递引用,对于常见的引用类型,比如:xxx a=new xxx();当我们将a赋值到另一个xxx的对象(比如对象b),那么我们在利用对象b去操纵与利用a去操纵是一样的,因为它们指向的是同一块堆空间。引用类型:自定义类,数组,字符串,接口,集合值类型:int,double,float,char,bool,decimal,enum,struct值类型的值传递值类型存储的地方全部都在栈上。比如int原创 2021-11-09 17:44:47 · 670 阅读 · 0 评论 -
C#抽象类
1、抽象类不能被实例化2、抽象类内部可以包含非抽象成员3、抽象类内部的子类必须实现它的内部属性和方法4、在传统的继承关系中子类若向上转型为父类,那么这个父类对象调用所有东西都只能是父类的,但是若是抽象类的子类向上转型为抽象类的对象,那么这个对象若调用的不是抽象成员,那么就是调用抽象类中的成员,若调用的是抽象成员,那么调用的就是子类的重写的方法。5、抽象类的好处1、我们可以使用抽象类对象去接受所有的子类对象,这就意味着我们可以使用抽象类的数组去接受所有抽象类的子类对象。2、结构层次分明原创 2021-11-09 17:01:15 · 1062 阅读 · 0 评论 -
C#的虚方法
虚方法在父类上定义,一般来说我们继承一个父类希望可以直接调用父类中就拥有的东西,但是有的时候,父类所拥有的东西并不是完全适合子类,所以子类就希望能够对继承的东西进行改造,于是就在父类上使用virtual对方法进行标识,表明这个方法子类是希望拥有自己的特点,同样,子类也需要在方法的前面表明它进行override,进行重写。...原创 2021-11-09 14:31:42 · 244 阅读 · 0 评论 -
C#StreamWriter不覆盖的写入
1、无论是StreamReader或是StreamWriter都可以实例化对象,我们可以将目标文件的路径作为传入传入它们的构造函数当中。这种方式创建的StreamWriter在写入内容的时候,只能以覆盖的形式写入内容,也就是写入的内容把之前的内容进行覆盖。所以这个时候只能使用File类的AppendText方法,该方法返回一个StreamWriter的对象,它可以使得内容的添加不进行覆盖。关于StreamWriter还有StreamReader都有几个关键的方法,比如write,StreamWrit原创 2021-11-09 09:45:09 · 2985 阅读 · 0 评论 -
C# FileStream
读取文件FileStream xx=new FileStraem("路径",FileMode.xxx,FileAccess); //创建一个对应的文件流对象该对象对文件的读取是采用字节的方式,每次读取一定大小的字节int xx= Read(byte[] xx,int start,int end);表示从文件中每次读取end-start的大小的字节,然后存入到参数中的字节数组中。同时还会返回一个整数表示本次读取到的有效数字为多少。防止end-start的数字太大,读取过多的空数据,这可以很好的提示原创 2021-11-09 09:34:18 · 629 阅读 · 0 评论 -
C#BufferStream
1、首先创建一个File类或者FileInfo类2、根据创建的File类或者FileInfo类去创建对应的文件流(FileStream)3、根据文件流去作为BufferStream的构造函数的参数,创建一个BufferStream对象4、创建一个字节缓冲区,使用BufferStream的read方法读取某个文件中的字节然后存入字节缓冲区当中,然后使用write方法将某个字符串或者其他东西转换为byte字节数组,然后将字节数组作为write的参数传入,然后写入文件当中。5、需要注意的地方在于我们每原创 2021-11-09 09:18:32 · 591 阅读 · 0 评论 -
C# StringBuilder
StringBuilder适用于需要经常变化的字符串,普通的String类型在对它进行修改的时候,看似是对同一个字符串进行修改,其实它的本质是在内存另外开辟一块空间用作修改后的内容的存储,所以在用到需要经常修改的字符串的时候,我们用StringBuilder比较好。Appen();Insert(int index,String xx)Remove(int start,int end)Replace("xx","aa");String和StringBuilder之间可以互相转换,...原创 2021-11-07 15:34:33 · 98 阅读 · 0 评论 -
C#的Directory类和DirectoryInfo类
1、文件是否存在Directory.Exists("path");Directory info=Directory("path');info.Exists2、创建文件夹Directory.CreateDirectory("path");DirectoryInfo xx=Directory.CreateDirectory("path"); //该方法返回一个DirectoryInfo的对象xx.Create();3、移动文件夹Directory.Move("C:\\t原创 2021-11-07 14:46:06 · 731 阅读 · 0 评论 -
C#File和FileInfo
1、文件是否存在FIle.Exists("path");FileInfo info=new FileInfo("path");info.Exists2、创建文件File.Create("path");FileInfo info=new FileInfo("path");info.Create();3、创建文件流FileStream fs=File.open(path,FileMode.[Open|OpenOrCreate|Append|Truncate]); //根据不同的模原创 2021-11-07 13:42:35 · 1291 阅读 · 0 评论 -
C#ref和out
1、ref如一个方法void xx( ref int a){a+=100;}我们此时定义一个int 类型的值,命名为b,此时我们将a作为参数传入这个方法,如:xx(ref b),于是b在传入这个方法后,就会得到值的改变。注意它不要求内部一定要对传入的参数赋值。2、outint a=0;int b=0;如一个方法void xx (out a,out b){a+=100;b+=100;}此时我们调用该方法传入a,b ,如xx(out a,out b),原创 2021-11-02 12:04:59 · 169 阅读 · 0 评论 -
C# File类的BYTE相关
Filed的ReadAllByte方法会将目标文本的内容全部转换为字节数组,里面存储的全部都是二进制数,但是表现形式是十进制数。一、如果想将一个字符串以Byte数组的形式存入到文本当中,那么需要:1、使用目标文本字符集的方式,将文本内容转换为Byte数组,如Byte[] aa = Encoding.UTF8.GetBytes("dsad");上面的代码使用了Encoding类中的UTF8的对象,去调用GetByte()方法,表明使用UTF8的方式将字符串转换为对应的字节数组2、然后使用F原创 2021-10-30 17:16:25 · 848 阅读 · 0 评论 -
C# File类
需要注意的是,这样下面的路径参数都需要在路径的前面加上一个@File.Create(“路径”);File.Delete(“路径”);File.copy("路径1","路径2");//复制粘贴一个文件File.Move(“路径1”,“路径2”); //移动一个文件File.ReadAllBytes("路径1"); //将路径里的文件的内容读取为10进制的数File.ReadAllLines("路径1"); //将路径文件里的每行文字读取为字符串。并存储在字符串数组中File.Rea原创 2021-10-30 10:11:39 · 161 阅读 · 0 评论 -
C#path类
PATH类在IO类下在定义路径的时候,需要在路径的头部写上@符号如:@C:\fuck.txtPath.GetFileName("路径");//返回路径的文件名Path.GetFileNameWithOutExtansion("路径");Path.GetDirectoryName("路径");//获取文件夹目录的名字Path.GetFullPath(“路径”)...原创 2021-10-30 08:38:07 · 82 阅读 · 0 评论 -
关于C#static的总结
首先static的修饰符的修饰位置仅仅限制在类中的成员,可以将其理解为类的后面一级的对象,当我们在实例化一个对象的时候,或者做与该类相关的操作的时候,若该类中有对应的静态成员,那么就会对这些静态成员进行初始,同时初始的顺序是由上至下的。static的成员是直到程序结束之后才进行释放,所以对于static成员的定义不能太多在static修饰的方法中只能存在静态成员,不能存在非静态成员。在普通的方法中既可以存在非静态成员,也可以存在静态成员。对于static修饰的构造函数,它不能使用任何的修饰符原创 2021-10-12 09:59:10 · 281 阅读 · 0 评论 -
C#的属性的定义
为了增加程序模块的低耦合,在定义某个程序模块的时候,该程序模块内部的属性都是定义为私有,C#的私有属性的定义边界是十分的严苛的,也就是说即便有子类去继承该类,也无法访问该类中的私有字段。如果想要指定只有子类可以访问,那么可以设置属性的权限修饰符为protected。在java中对待私有属性通常会定义相对应的get和set方法,在C#里面使用一种特殊的形式。使用属性对其进行表示,一般有两种方式:第一种:private 类型 字段名public 类型 属性名 {get{return x;原创 2021-10-12 09:53:44 · 793 阅读 · 0 评论 -
C#字符串相关方法与字符数组的转换
字符数组与字符串转换字符串对象.ToCharArray:字符串对象可以调用ToCharArray的方法将字符数组转换为字符数组new String (字符数组):使用new String(字符数组),将字符数组放入其中可以将字符数组转化为字符串;字符串的相关方法toString();一切类型都可以使用ToString()方法将其转化为字符串类。字符串对象.ToUpper():将字符串转化为大写字符串对象.ToLower():将字符串转换为小写equals(String xxx原创 2021-10-10 20:24:02 · 4666 阅读 · 0 评论 -
C# params可变参数
在方法中,当有数组作为参数的时候,若我们传入该方法的数组的长度不固定,即它的内容不固定,那么我们可以使用params去修饰该方法中的数组参数,表示这个数组参数是一个可变的数组参数,于是我们在对该方法传入参数的时候,就可以传入多个与该数组同类型的数值,注意这个传入的数是不固定的,但是每个与数组同类型的数值都会被其视为是数组的一部分,然后将这个数组作为参数传入。比如 public void kk(params int numbers){}我们对这个方法传入参数1,2,3,4,那么传入这个方法的数原创 2021-10-10 19:05:48 · 163 阅读 · 0 评论 -
C# 结构类型
struct 结构名 {类型 字段名;类型 字段名2。。。。。。类型 字段名n}结构名 变量名;变量名.内部属性,以这种方式可以一次性声明多个具有多属性的属性综合体。一个结构变量可以存储多个多种数据,然而普通的类型变量只能存储一个数值。在声明结构内部的属性的时候,我们在内部的字段名前面加上下划线作为与变量的区别。...原创 2021-10-10 18:43:25 · 87 阅读 · 0 评论 -
C#的值类型和引用类型
值类型和引用类型在内存上存储的地方不一样。值类型:int,double,float,char,bool,struct,decimal,enum引用类型:String,自定义类值类型是存储在内存的栈中引用类型的内容是存储在堆中,但是引用类型的在堆中的地址是存放在栈上的。当我们实例化对象后它new的对象将会存储在堆当中,然后再栈上存放的是new的对象的对应的引用地址。...原创 2021-10-10 18:30:49 · 70 阅读 · 0 评论 -
C#命名空间
C#的命名空间就是namespace后面跟着的内容,如果想要在一个项目中调用其他项目的类的内容,那么就需要点击项目的引用,先将该项目引用后,再到类的上面输入using 类名,以这种形式去进行跨项目的类的调用。...原创 2021-10-10 18:22:16 · 131 阅读 · 0 评论 -
C#学习日记二
1、Type.Parse("字符串")----静态方法每个类型都有一个Parse的方法,如果方法内的参数是符合条件的,那么该字符串将会转化成对应的Type类型。2、Type.TryParse("字符串",out 整型变量)---静态方法为了防止Parse方法转化时因为字符串的错误而导致异常,引入这个try方法,该方法返回一个布尔类型的变量代表此次转换的成功与否,同时out后面的整型变量也代表着此次转换是否成功,成功返回1,错误返回0.3、字符的本质是数字,但是数字不能强行赋值给字符,原创 2021-09-07 17:45:17 · 100 阅读 · 0 评论 -
C#学习日记记录一
1、项目的新建新建--》项目--》virtual C#--》windows可以选择创建winform窗体应用程序或者是控制台程序2、virtual常规的使用在图中红框框住的部分是解决方案管理器,我们右击解决方案可以新建项目,同时我们右击项目名后可以在该项目中创建类文件。我们新建项目之后会产生对应的解决方案文件,里面包含着多个项目文件,而项目文件又包含着多个类文件,每个项目文件里面都有一个bin目录,里面存放着可执行的exe文件。3、常用设置行号:工具---》项目---》.原创 2021-09-06 22:47:08 · 149 阅读 · 0 评论