更多
2020年11月23日 22点36分 作者:叶飞 修改

高阶:泛型 / 集合 / Lambda / 异常 / IO / 多线程

泛型可以有泛型方法/类等,同C#可以有约束public class Student<T extends IMajor> extends Person {子类继承时:public class OnlineStudent<T extends IMajor> extends Student<T > {协变/逆变通配符:?实现extends:协变(out)super:逆变(in)Optional 类对应NullableOptional<Integer> age = ……

Java C# 对比 高阶语法
2020年11月19日 21点44分 作者:叶飞 修改

异步方法和TPL: async / await / Parallel

封装我们要把上面这个Task封装成方法,怎么办?最重要的一点,这个方法要能返回生成的random,后面的代码要用!public static Task<int> getRandom(){return Task<int>.Run(() =>{Thread.Sleep(500); //模拟耗时return new Random().Next();});}@想一想@:应该如何调用这个方法?(提示:不要直接getRandom().Result) 假如我们还需要进一步的封装,添加 ……

异步方法 async await 并发
2020年11月05日 23点13分 作者:叶飞 修改

面向对象:类和对象/封装/继承/多态/抽象接口/枚举/反射/String

类和对象 类文件后缀:.java包(namespace):项目上右键创建package _17bang.CD.Yz;引入(using)import _17bang.YZ.Student;没有partial类访问修饰符:没有关键字internal(不能显式声明,默认即可,package中可见)static:可以由对象调用(只warning不报错)引用类型和值类型其他类成员快捷键生成:alt+shift+s,构造函数间调用:public Student(int age) {this();}没有属性,只有get ……

Java C# 对比 面向对象
2020年10月23日 09点12分 作者:叶飞 修改

C#-面向对象:string还是StringBuilder?

我们之前故意对string一带而过,是因为它非常特别。首先,它是imutable(不可变的)即一个string定义的字符串,一旦设定,就不能改变。在string上直接F12转到定义,就可以看到String类的成员。其中,只有一个只读的静态成员Empty(建议使用,以替代null和空字符串""):public static readonly String Empty;一个只读的索引器,可以获取字符串中某个下标的字符:public char this[int index] { get; }一个只读的属性Len ……

源栈培训 C# 语法 基础 对象
2020年10月23日 08点16分 作者:叶飞 修改

C#-面向对象:争议TDD(测试驱动开发)

在谈到特性的使用场景时,还有一个绝对离不开的就是单元测试按飞哥的定义,单元测试是开发人员自己用代码实现的测试。注意这个定义,其核心在于:主体是“开发人员”,不是测试人员。途径是“通过代码实现”,不是通过手工测试。实质是一种“测试”,不是代码调试。暂时还有点抽象,同学们记着这个概念,我们先用一个NUnit项目来看一看单元测试长个什么样。在solution上右键添加项目,选择Test中的NUnit Test Project,输入项目名称,点击OK:Visual Studio直接集成了NUnit说明微软在开源和 ……

源栈培训 C# 语法 基础 对象
2020年10月22日 20点47分 作者:叶飞 修改

C#-面向对象-反射和特性

同学们应该还记得,我们说过:(因为反射)访问修饰符不能真正地保证类成员不能被访问……所以我们接下来试一试这个反射(Reflection)仍然使用我们之前的Student类,在里面添加一个私有的_weight字段:class Student{private int _weight;public Student(int weight){_weight = weight;}}现在给我一个它的变量,让我来获取它的_weight值吧!Student zjq = new Student(63);首先,我要得到这个变量 ……

源栈培训 C# 语法 基础 对象
2020年10月22日 18点36分 作者:叶飞 修改

C#-面向对象-万物皆对象:Object和装箱拆箱

我们来看一下这个代码:DayOfWeek.Friday.GetType()DayOfWeek.Friday是一个枚举值,它的这个GetType()是哪里冒出来的?结合我们前面所学的知识,子类中找不到的成员,一定是来自于它的父类,是不是?然而,enum DayOfWeek又没有继承啊?欲知详情,有一个简单粗暴的办法:直接在GetType()上F12,马上转到方法定义:哈哈,GetType()就是Object的实例方法嘛!实际上,Object是C#中所有类型的父类,可以说它是万物之祖。因此,任何类默认自动的继 ……

源栈培训 C# 语法 基础 对象
2020年10月22日 16点53分 作者:叶飞 修改

C#-面向对象:枚举和位运算

大家在学习DateTime的时候有没有发现一个DayOfWeek类型,表示星期几。使用F12就可以看到它的定义:这里就出现了:枚举(Enum)枚举(enum)是和类(class)、结构(struct)并列的一种类型。它的成员又被称之为枚举值,枚举值不能有任何修饰符,只能包含两部分:名称,比如DayOfWeek中的Sunday、Monday等,名称一般是“有意义的”,以方便开发人员调用底层数据,比如DayOfWork中的0、1、2等。默认底层数据是int类型,还可以使用其他整数类型,比如byte、short ……

源栈培训 C# 语法 基础 对象
2020年10月22日 16点21分 作者:叶飞 修改

C#-面向对象-结构和日期

同学们是否还记得,我们在讲类型转换的时候,有过这样的写法:int.Parse("23");以前我们知道,Parse()是一个方法;现在我们可以想一想,Parse()究竟是谁的方法了。要知道答案,非常简单,光标停留在Parse()上,直接F12转到定义,结果我们就看到了:这什么意思?我们看到了Parse()是Int32的一个静态方法。而Int32又是什么?它是一个结构(struct)结构是一个和类(class)非常非常相似的封装容器。它的成员和语法,和类几乎一模一样。除了上面的静态方法调用,还可以://ne ……

源栈培训 C# 语法 基础 对象
2020年10月22日 16点13分 作者:叶飞 修改

C#-面向对象:抽象类和接口

接下来我们继续学多态相关的语法。abstract(抽象)//要在类中声明abstract方法,类上就必须加abstractinternal abstract class Person{//abstract修饰的方法不能有方法体!internal abstract void Eat();}由abstract定义的方法叫做抽象方法,抽象方法只能放置在被abstract修饰的抽象类中。抽象类有一个非常明显的特点:不能被实例化!但是,它除了可以声明抽象方法,还可以声明其他普通类成员,包括构造函数。因为抽象方法没有 ……

源栈培训 C# 语法 基础 对象
关键字



帮助

反馈