我本来是写Java的,但是这边的代码用的是.NetCore框架
就自学了
但是学下来,发现其实这两者并没有什么本质区别
目录
- Java与c#形式上的区别
- CLR与JVM
- 创建与一些方法
- 父类子类/基类派生类
- 接口
- 预处理器
- c#的反射
- 访问器?get set?
- 索引器
- 不安全代码
- 委托
- 事件(Event)
Java与c#形式上的区别
_ ————————————————-
_ ———————————————————————————
Java导包用import而c#用using
Java与c#都是写一个静态的main方法来启动,c#的Main必须大写
Java和c#的数据类型基本一样,c#中的string的s可以小写,c#的布尔类型是bool
etc…
CLR与JVM
c/c++内存都是自己管理的,而c#则是有类似jvm的虚拟机
所以说c#和c++是有很大差别的,反而是从内到外都接近Java的一种语音
创建与一些方法
int [] n = new int[10]
int [] n = new int[10]
int [] n = new int[10]
int [] n = new int[10]
Compare和Contains方法
父类子类/基类派生类
基类和派生类就是父类和子类
extends变成了:
c#也有析构函数,用来创建完对象销毁时候说一句”对象已经销毁”…
接口
using System;interface IMyInterface{ // 接口成员 void MethodToImplement();}class InterfaceImplementer : IMyInterface{ static void Main() { InterfaceImplementer iImp = new InterfaceImplementer(); iImp.MethodToImplement(); } public void MethodToImplement() { Console.WriteLine("MethodToImplement() called."); }}
这个是接口,Java是用implements
这里和类继承一样,是:
不太熟悉的内容枚举类型
其实不该不熟悉,可能是自己太菜了…
命名空间
和package用法差不多” />
我把#理解为static
c#的反射
c#中的反射,Assembly.Load(“命名空间”)” />
这玩意不就是get set吗?!
c#叫作访问器
索引器
这个感觉挺好的,实际上相当于把一个类赋予了数组的功能
不安全代码
委托
好的,来看一下委托,大概是这个形式
如果一个方法,带有单一的string类型的变量,那么输入这个方法,就可以创建对象,并且可以有一个int类型的返回值
单独使用一个方法,并且将它创建对象的功能
委托链接看这里
事件(Event)
这个只好用例子来解释
using System;using System.Timers; namespace easyToGo{ class Program { static void Main(string[] args) { System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = 1000;//设置时间间隔 Boy boy = new Boy(); timer.Elapsed += boy.Action; Girl girl = new Girl(); timer.Elapsed += girl.GirlAction; timer.Start(); Console.ReadLine(); } } class Boy { internal void Action(object sender, ElapsedEventArgs e) { Console.WriteLine("Jump"); } } class Girl { internal void GirlAction(object sender, ElapsedEventArgs e) { Console.WriteLine("Sing!"); } }}
timer.Elapse为每2秒启动一次
Boy和Girl的事件分别为Jump和Sing
所以他会一直运行这个
这篇写的挺好的
集合
泛型
正则表达式,直接看例子比较好懂
这里有一些例子
主要功能是字符串替代之类的?..
文件I/O,这部分遇到的时候再考虑怎么写吧,先这样…
特性,给人的感觉是画蛇添足,不就是注解吗?!
了解特性看这里