C#入门知识
鲜鱼汤是我了
这个作者很懒,什么都没留下…
展开
-
C#之接口和显式接口的基本写法
值类型在复制的时候,传递的是这个值的本身int n1 = 1;int n2 = n1;n2 = 2;引用类型在复制的时候,传递的是对这个对象的引用(相当于是把地址给复制过去了)原创 2020-08-26 15:36:44 · 383 阅读 · 0 评论 -
c#中的多态的不同实现方法,利用虚方法和抽象类 (利用多态求圆和矩形的周长和面积)
实现多态的3种方法虚方法抽象类接口虚方法构成重写关键词:virtual和override下列例子同样用方法Run,但引用Vehicle和引用Car两种实例的时候,打印出来的语句是不一样的。也就是说,用不同类型实例调用方法的时候,与实例相关联的版本就会被调用,是父类的Run被重写了static void Main(string[] args) { var car = new Car(); car.Run();原创 2020-08-25 14:48:31 · 724 阅读 · 0 评论 -
C#中StreamReader和StreamWriter的操作的操作
StreanmReader和StreamWriter他们是操作文本的,操作字符的之前学的FileStrea类,是操作字节的,就是可以操作所有的文件,而且可以处理大文件StreamReader的操作using(StreamReader sr = new StreamReader (@"/Users/ttfiles/Desktop/new .txt", Encoding.Default))//使用这个来读取一个文本文件 { while (!sr.E原创 2020-08-24 22:11:21 · 444 阅读 · 0 评论 -
FileStream流的使用-----读取数据,写入数据 (使用此方法完成文件的复制)均有详细的注释
读取数据的用法代码中就有了大量注释,在此我就不做过多的说明了static void Main(string[] args) { Console.WriteLine("--------------------"); FileStream fsread = new FileStream(@"/Users/ttfiles/Desktop/new.txt",FileMode.OpenOrCreate,FileAccess.Read);原创 2020-08-24 21:50:09 · 820 阅读 · 0 评论 -
List泛型集合--对应的ArrayList;Dictionary集合--对应Hashtable(装箱与拆箱问题)
List泛型集合在ArrayList中,长度可以随意改变,并且可以存入各种类型的数据。但是当要使用这个集合数据的时候,由于是object类型,每次使用里面需要的内容都要进行强制转换为自己需要的类型,就比较麻烦。泛型集合与数组一样,只能存放规定的固定的类型数据 //创建泛型集合对象 List<int> list = new List<int>();//<>里面是写要的类型 list.Add(123); list.AddRange(原创 2020-08-24 17:42:14 · 215 阅读 · 0 评论 -
C#中的HashTable,有点类似字典
HashTable 也被称为键值对集合,也就是其他语言里说的字典类直接先放例子,来感受一下,是个什么样子的static void Main(string[] args) { //创建一个键值对集合对象 Hashtable ht = new Hashtable(); ht.Add(1, true); ht.Add(2, "Tom"); ht.Add("001", 'f'原创 2020-08-23 23:02:52 · 459 阅读 · 0 评论 -
C#中的ArrayList集合
static void Main(string[] args) { ArrayList list = new ArrayList();//创建了一个集合 /*集合:很多数据的一个集合 数组:长度不可变,类型单一 集合的好处是长度可以任意变化,类型随意*/ list.Add(1); list.Add("hahaha");原创 2020-08-23 22:06:15 · 824 阅读 · 0 评论 -
C#之继承的基本知识点
之前写了一个刘铁猛老师类的继承,但是讲的比较笼统,适合作为学过但是忘记的人使用。本次写的会更加的零基础,小白一点继承也是为了避免代码冗余,比如人类,就会有姓名性别年龄等共有的特性,但是人类下面的分支会有各种不同的特点。例如人类下的老师,会教书。学生,要写作业。厨师,会做菜。于是创建他们的类的时候,不需要再重新对姓名性别年龄等共有的特性重新定义,只需要定义他们的特点就好了。这就是类的继承的作用于是,上述的人类就是父类,它的东西可以提供给下面继承的子类使用,子类就是例如老师,学生,厨师这样的继承的语法c原创 2020-08-23 16:29:20 · 180 阅读 · 0 评论 -
c#中字符串类型的多种使用方法
字符串的不可变性当我们用int 类型,int a = 1;但是当我们重新赋值2之后,1的值就没了。但是在string类型中就不一样了,当我们string a = “Tom"以后,再重新对a进行赋值"Jerry” 之前的“Tom”并没有被消去,而是在堆内另外开辟一个空间存储Jerry,然后栈中的a会指向这个新的地址。Tom仍然占用一个存储空间把string看做char类型的一个只读的数组string s = "abcde"Console.WriteLine(s[0]);使用.ToStri原创 2020-08-23 00:38:36 · 425 阅读 · 0 评论 -
C#稀碎的知识($的作用,@的作用,前++与后++,ToString的问题,File的用法,访问修饰符)持续更新
var name = "张三";var age = 23;var sex = "男";var message = string.Format("我叫{0},我的年龄为{1},我的性别是{2}", name, age, sex);var show = $"我叫{name},我的年龄为{age},我的性别是{sex}";Console.WriteLine(message);Console.WriteLine(show);也可以使用占位符var name = "张三";var age = 23原创 2020-08-21 23:32:46 · 250 阅读 · 0 评论 -
C#中利用入门面向对象,使用构造器和方法写一个记录不同公里有不同价格的一个Ticket类
在这个类里的要求是:创建一个只读属性的距离,和一个只读属性的价格,价格是每公里一块钱,但是当公里到了一个范围的时候,会打折。于是整体的代码是:class Program { static void Main(string[] args) { Ticket t = new Ticket(100); t.ShowTicket(); } } public class Ticket原创 2020-08-21 21:56:03 · 650 阅读 · 1 评论 -
C#中面向对象的初级知识(对象的实例化和this关键词,属性,静态与非静态,构造函数)
一开始是从面向对象——>面向过程所谓面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作。前面记录过了关于类的定义以及写法,但是没有具体写关于创建类的对象的过程,也就是实例化过程,这里补充一下实例化过程就是创建一个对象,关键词是“new”类是不占内存的,但是创建一个对象之后,会开辟一个内存下面,便是一个简单的例子,创建一个对象,然后使用其中的属性和方法(可以看到其中包含了this这个关键词,this表达的是当前这个类的对象)class Program {原创 2020-08-21 21:51:16 · 467 阅读 · 0 评论 -
C#中记录一个方法的小练习(只能输入两个数字,其他字符会提示重新输入,且第一个数字不能大于第二个数字,计算他们之间的和)
class Program { static void Main(string[] args) { Console.WriteLine("please input the first number"); string s1 = Console.ReadLine(); int number1 = GetNumber(s1); Console.WriteLine("pleas原创 2020-08-20 16:36:42 · 295 阅读 · 0 评论 -
C#中的ref参数的使用
先通过通过一个小例子来说明ref的作用 static void Main(string[] args) { double ss = 100; Add(ss); Console.WriteLine(ss); } public static void Add(double s) { s += 5; }这可以很明显知道,ss传进了方法原创 2020-08-20 14:53:34 · 4715 阅读 · 1 评论 -
C#中out参数的使用(两个例子:1.返回多个不同类型的参数。2.利用out做一个登陆消息提示)
在使用out前,先说一个,如果想在一个方法中返回多个值的时候,且这些值的类型相同,比如要你写一个方法,它要返回一个数组中的最大值,最小值,平均值和参数的话。那么这个方法可以用数组来实现,一个数组返回4个值。//将要返回的4个值,放到一个数组中返回 public static int[] GetMaxMinSumAvg(int[] nums) { int[] res = new int[4]; //假设res里的第一个是最大值,原创 2020-08-20 13:56:07 · 1345 阅读 · 0 评论 -
C#入门中的方法基本操作(利用方法判断是否为闰年)
方法就是将一堆代码进行重用的一种机制,也就是在C中称作的函数。这段代码中,可能有输入的值(参数),可能会有返回值。一个方法就是专门做这一种事的人,我们调用它来完成一些事情,它可能需要我们提供给它一定的数据,然后返回给我们一定的结果。语法是这样的:public static void Calculate() { //方法体 }public:访问修饰符+static:静态的(这两个都是自己选择性添加)+返回值类型:上面我写的是void,有的是int类型的返原创 2020-08-19 17:19:35 · 352 阅读 · 0 评论 -
C#中稍复杂的数据类型(常量,枚举,结构,数组)
常量用const声明一个常量,是不能被多次赋值的。与普通的变量不同const int number = 10;//赋值后就不能变了枚举它就是一个变量类型,只是枚举声明,赋值,使用的方式稍微有点不一样枚举类型默认是可以跟int类型相互转换 也就是和int类型是兼容的。(说明枚举类型默认是从0开始的)枚举类型的转换class Program { static void Main(string[] args) { Gender原创 2020-08-19 15:47:08 · 214 阅读 · 0 评论 -
C#中的类型转换(Convert,Parse,Try Parse)三种
显式类型转换:需要满足两种类型相兼容语法——(待转换的类型)要转换的值int n = (int) 10.6;Convert转换(保留小数位数)两个变量不兼容,使用Convert转移,比如double和stringstring s = "123";double d = Convert.ToDouble(s);int a = 10;int b = 3;double c = a*1.0/b;Console.WriteLine("a除b的结果是{0:0.00}",c);//这里的冒号之后是原创 2020-08-19 11:49:43 · 1268 阅读 · 0 评论 -
什么是捕获异常以及基本语法
语法上没有错误,在程序运行的过程当中,由于某些原因程序出现了错误,不能再正常的运行了这时我们需要使用try-catch来进行异常捕获(try和catch之间不要有代码)try{ 可能会出现的异常;}catch{ 出现异常后执行的代码;}如果try中的代码出现了异常,那么异常的那一句后面即使有代码也不会执行了但是这里存在一个 问题,即变量的作用域,在try里面的变量,在外面的语句是不能访问到的try{ int number = Convert.ToInt32(Console.R原创 2020-08-18 20:31:04 · 1334 阅读 · 0 评论 -
什么是类型(值类型与引用类型)以及类型的作用,还有它的分类
什么是类型类型又名数据类型是一些性质相同的值是数据在内存中存储时的“型号”在内存中,占据多大的空间编程语言的数据类型与数学中的不完全相同c#的五大数据类型类(classes):如Windows,Form,Console,String结构体(Structures):int32,int64,Single枚举(Enumerations):如visibility 是限定永固在集合中选定有效值时使用的接口(Interfaces)委托(Delegate)分类如下:分为了引用类型和原创 2020-08-12 17:04:47 · 1943 阅读 · 0 评论 -
C# 枚举类型和结构体
关于枚举:人为限制了取值范围的这么一些整数 class Program { static void Main(string[] args) { Person person = new Person(); person.Level = Level.Employee; Person Boss = new Person(); Boss.Level = Level.Boss;原创 2020-07-27 10:46:01 · 303 阅读 · 0 评论 -
C#的泛型(包括泛型委托)
这篇,也是刘铁猛老师的最后完结课程了泛型(generic) 它无处不在为什么需要泛型:避免成员膨胀或者类型膨胀正交性:泛型类型(类/接口/委托/…)、泛型成员(属性/方法/字段/…)类型方法的参数推断泛型与委托,lambda表达式泛型全程应该是,泛化的数据类型。是泛泛而谈的,比如我喜欢听音乐,那么音乐就是一个泛型的。而如果我要去听音乐,我就得选择一个具体的音乐,比如流行乐和古典乐避免类型膨胀和成员膨胀class Program { static void Main原创 2020-07-26 01:19:33 · 451 阅读 · 0 评论 -
C#里的反射,特性和依赖注入(接口隔离)利用实例代码来解释说明
刘铁猛老师之所以把他们三个放在一起讨论,是因为他们都是基于反射机制的。而放在接口后面讲解,是因为反射大多数是配合接口一起使用的。一个重要的概念——接口隔离原则:契约,就是两个事。甲方说我不会多要(软性的规定,所以是设计方面的问题),乙方则说我不会少给(硬性的规定) 所以,判断甲方有没有多要,就看传给调用者的接口类型里,有没有一直没被调用到的函数成员。这就说明接口太大了。其中有两种具体原因1. 接口太大,把太多的功能包含在里面了。违反了单一职责原则一个类,应该只做一组相关的事。解决方案:把大原创 2020-07-24 21:58:28 · 1219 阅读 · 0 评论 -
C#接口具体解释(与抽象的区别)
本次利用代码细致解释一下接口的具体使用方法,以及介绍解耦的重要性和方法借用刘铁猛老师PPT里的一个图,感觉很清晰,接口,抽象之间的联系接口与单元测试接口的本质,决定了接口中的纯虚方法必须是public,而抽象类中的方法,只要不是private就好了。成员访问级别(public)决定了接口的本质。它的本质是服务的消费者与服务提供者的“契约”抽象类当中,被protected修饰的成员,只能够让自己的子类看到,internal出了自己的程序集,就看不到了。但是接口想要别人看到,就不能加以限制,必须使用p原创 2020-07-22 21:57:36 · 140 阅读 · 0 评论 -
C#里的抽象类与接口(开个小头)
总摘要学习总结刘铁猛老师的课程,写出的如下笔记接口和抽象类的定义:接口和抽象类,都是“软件工程产物”。具体类->抽象类->接口: 他们是越来越抽象,内部实现的东西越来越少。 (设计模式的学习前提需要透彻理解了接口和抽象类,并能在项目熟练使用。而且需要solid设计原则可以很好运用)抽象类是未完全实现逻辑的类(可以有字段和非public成员,他们代表了“具体逻辑”)接口是完全未实现的类(“纯虚类”;只有函数成员;全员public)接口为了解耦而生:高内聚,低耦合的追求;方便单元原创 2020-07-21 22:18:24 · 173 阅读 · 0 评论 -
C#的重写与多态
重写:类成员的纵向扩展重写也就是,继承的不同方面,即子类对父类的纵向扩展。(行为改变了,且版本增高了)下面的例子中,同样有方法Run,但引用Vehicle和引用Car两种实例的时候,打印出来的语句是不一样的。也就是说,用不同类型实例调用方法的时候,与实例相关联的版本就会被调用 例如:static void Main(string[] args) { var car = new Car(); car.Run();原创 2020-07-21 00:26:34 · 463 阅读 · 0 评论 -
C#类的继承与类成员的访问
继承的定义是派生类在基类已有的基础上对基类进行横向和纵向的扩展,但只能扩招,不能删减。所以要小心谨慎的在类库添加。如何写继承呢:class Vehicle { } class Car:Vehicle//car和vehicle就构成了一个继承类 { }这就表示Car就是从Vehicle派生出来的。子类的实例,也是父类的实例:如一个汽车,也是一个交通工具。老师,是人的派生,所以,一个老师也是一个人一个类最多原创 2020-07-20 00:56:30 · 933 阅读 · 0 评论 -
C#类的声明和访问控制
类声明的全貌声明既定义一般说声明一个类,创建一个类的实例或者对象。在c#和java中两个可以混用Student stu = new Student();也是可以把类声明在一个类里面,就变成了成员类,就变成了program这个类的一个成员,类修饰符: new public internal protected static等等类体: 花括号里的类成员,有属性,方法,字段,事件public 是一个访问级别,变成公开的了,其他的项目也能访问被这个修饰的方法。若什么都不加其实即使inter原创 2020-07-18 21:52:38 · 329 阅读 · 0 评论 -
C# 类的定义(包括构造函数的例子)
类是对现实世界抽象所得到的结果类就是 class + 类名 + 类体下面是关于类的简单应用的一个小例子:class Program { static void Main(string[] args) { Student stu = new Student(1,"tt") ; //这个空的圆括号就是实例默认构造器 // 作用是把类里的字段清成默认值 stu.Repor原创 2020-07-18 21:39:01 · 628 阅读 · 0 评论 -
类,以及它与名称空间以及对象的关系(适用C#或JAVA)
类的定义类是对现实世界事物进行抽象所得到的结果事物包括物质(实体)与运动(逻辑)抽象的过程即为建模的过程类的三大成员1. 属性- 存储数据,组合起来表示类或者当前的状态2. 方法- 由c语言中的函数进化而来的,表示类或对象能做些什么- 构成逻辑的成员3. 事件- 类或者对象通知其他类或对象的机制(例如控件里的点击click事件)- 要善用事件的机制静态(static)成员在语义上表示它是”类的成员“,是宏观上本身所固有的。实例(非静态)成员在语义上表示它是”对象的成员“,就原创 2020-08-07 17:25:31 · 312 阅读 · 0 评论