C#学习
记录C#学习之旅
有理想的咸鱼焦
这个作者很懒,什么都没留下…
展开
-
C#面向对象-17Dictionary字典集合
Dictionary字典集合与HashTable类似,但其中键值对类型确定并且可以利用KeyValuePair的类型一起得到键值对,如代码所示 Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "张三"); dic.Add(2, "李斯"); dic.Add(3, "网速");原创 2020-07-28 21:48:14 · 254 阅读 · 0 评论 -
C#面向对象-16装箱和拆箱
装箱将值类型转换为引用类型拆箱将引用类型转换为值类型发生的条件是否发生装箱和拆箱,要看两种类型是否存在继承关系,如果存在继承关系,可能发生装箱和拆箱;如果没有继承关系,一定不存在装箱和拆箱 int n = 10; object o = n;//装箱 int nn = (int)o;//拆箱 //下面代码不存在装箱拆箱,因为string 和Int不存在继承关系 string s = "123";原创 2020-07-28 21:28:30 · 199 阅读 · 0 评论 -
C#面向对象-15 List泛型集合
使用泛型集合可以创建类型确定的集合与数组的区别是长度可变 List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.AddRange(new int[2] { 1, 2 }); for (int i = 0; i < list.Count原创 2020-07-28 21:17:21 · 168 阅读 · 0 评论 -
C#面向对象-14Path类和File类
Path类常用方法 string str = @"E:\My .NET Study\面向对象基本语法\教程.mp4"; //获得文件名 Console.WriteLine(Path.GetFileName(str));//教程.mp4 //获得文件名但不包含扩展名 Console.WriteLine(Path.GetFileNameWithoutExtension(str));//教程原创 2020-07-17 23:09:21 · 121 阅读 · 0 评论 -
C#面向对象-13 Hashtable
Hashtable创建键值对的集合对象,也叫字典键值对对象[键]=值,键必须是唯一的。简单用法遍历Hashtable需要用foreach,其中var可以根据变量的值反推该变量值的类型。var声明的变量必须初始化,因此在其它场景中应用不多,而在这里由于hashtable键的类型不确定,所以用var常用方法foreachAddRemoveClear Hashtable ht = new Hashtable(); ht.Add(1, "原创 2020-07-17 22:43:20 · 209 阅读 · 0 评论 -
C#面向对象-12集合
ArrayList - 集合集合的特点长度不限元素类型不限属性ArrayList list = new ArrayList();int length = list.Count;//集合元素个数int c = list.Capcity;//集合最大包含元素的个数它实现长度不限的原理就是每次集合中元素超过最大可包含的元素后,就会自动再申请一倍的空间方法ArrayList list = new ArrayList();list.Add(1);//添加单个元素list.AddRange原创 2020-07-13 22:30:58 · 129 阅读 · 0 评论 -
C#面向对象-11里氏转换
里氏转换子类可以赋值给父类,用途:如果有一个地方需要父类做参数,可以向其中传入一个子类代替 Teacher tc = new Teacher("张三",18,'男',11111,10000); Person ps = tc;// 或者Person ps = new Teacher() ps.SayHello(); Console.ReadKey();如果父类中装的是子类对象,可以将父类强转为子类对象 Teac原创 2020-07-12 22:40:59 · 141 阅读 · 0 评论 -
C#面向对象-10继承
应用场景我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员单独的封装到一个类中,作为这些类的父类。父类又叫基类子类又叫派生类继承的特性继承的但根性:一个子类只能有一个父类继承的传递性:继承可以传递可以在VS中查看类图去看类之间的关系子类继承了父类的什么子类继承了父类的属性和方法,但没有继承父类的私有字段。子类没有继承父类的构造函数,但子类会默认调用父类无参的构造函数,因为目的是创建父类对象,使得子类可以使用父类中的成员。所以如果在父类中重新写了一个有参数的构造函原创 2020-07-12 21:29:24 · 154 阅读 · 0 评论 -
C#面向对象-09字符串
字符串的不可变性当给字符串重新赋值后,在堆中的原字符串没有被销毁,而是在堆中新开辟块内存重新存储,原栈中对堆的引用指向新的地址。替换字符串某字符的方法字符串可看做char的只读数组,因此不能直接对该字符重新复制替换字符串中的某个字符可用如下方法//想把s的首字母换位bstring s="abcdefg";//s[0]='b',这样是不行的,因为s[0]是只读的//正确做法//首先将字符串转换为char类型数组char[] chs = s.ToCharArray();chs[0] = '原创 2020-07-10 23:41:29 · 132 阅读 · 0 评论 -
C#面向对象-07命名空间
作用namespace(命名空间)用于解决类重名的问题,可以看做类的文件夹,即可以认为类是属于命名空间的。如果当前项目中没有使用的类的命名空间,需要手动的导入该类的命名空间。导入方法写上该类,在该类下发有一个蓝色的框框,用鼠标去点,出现using …alt+shift+f10可以快速的出现using…,再用鼠标点记住命名空间的名字,手写在一个项目中引用另一个项目的类步骤:1.引用项目右键点击引用,点击添加引用选择要引用的项目可以看到该项目已经被引入进来2.引用命名空间u原创 2020-07-08 23:10:12 · 139 阅读 · 0 评论 -
C#面向对象-05 this关键字 06析构函数
this关键字的作用1.代表当前对象2.在类中显式的调用本类的构造函数语法为 :this() //构造函数 public Student(string name,int age,char gender,double score) { this.Name = name; this.Age = age; this.Gender = gender; this.Score = s原创 2020-07-08 22:31:04 · 146 阅读 · 0 评论 -
C#面向对象-04构造函数
构造函数的作用帮助我们初始化对象,即给每个对象属性赋值构造函数是什么1.构造函数是一个特殊的方法,没有返回值,连void也不能写。2.构造函数的名称必须和类名一样。3.构造函数必须是public的原因:创建对象时使用new 来创建,它会给我们做三件事情。1)在内存中开辟块空间2)在开辟的空间中创建对象 3)调用对象的构造函数初始化对象。4. 不写构造函数的话会默认有一个无参数的构造函数。写上后这个默认的就消失了。5. 构造函数可以进行重载。重载就是方法名相同,参数不同。例子没有构造原创 2020-07-08 22:12:13 · 146 阅读 · 0 评论 -
C#面向对象-03静态和非静态区别
1静态成员必须用类名调用,实例成员用对象名调用2静态函数中,只能访问静态成员,不能访问实例成员(又叫非静态成员)3.实例函数中,既可以访问静态成员,也可以访问实例成员。4.静态类中只允许有静态成员,不允许有实例成员。5.如果某个类希望当成工具类使用,可以考虑将其写为静态类。静态类在整个项目中资源共享。在程序完全结束后,静态类才释放资源。...原创 2020-06-22 20:38:09 · 135 阅读 · 0 评论 -
C#面向对象-02类中的属性
属性作用保护字段,对字段赋值取值进行限定。因此避免直接操作对象的字段,而是通过操作属性去操作字段。属性实际上就是两个方法,一个set(),一个get()。为了保护字段,将字段设为private,只能在当前类访问,而将属性设置为public,可以被其他类访问。并不是所有属性都有get和set,都有的话叫可读可写属性。Person.csusing System;using System.Collections.Generic;using System.Linq;using System.Tex原创 2020-06-21 23:30:20 · 255 阅读 · 0 评论 -
C#面向对象-01创建对象
创建项目文件-新建项目,如图创建类语法[public] class 类名{ 字段; 属性; 方法;}为项目添加类右键项目-添加-新建项,新建Person类在Person.cs文件编写如下namespace _01面向对象{ public class Person { //定义字段 public string _name; public int _age; public char _gender原创 2020-06-21 22:54:20 · 504 阅读 · 0 评论