• C#学习以及感受


    Java与c#这两者并没有什么本质区别

    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.");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    这个是接口,Java是用implements
    这里和类继承一样,是:


    不太熟悉的内容枚举类型
    其实不该不熟悉,可能是自己太菜了…


    命名空间

    和package用法差不多?


    预处理器

    在这里插入图片描述

    在这里插入图片描述

    我把#理解为static


    c#的反射

    在这里插入图片描述
    c#中的反射,Assembly.Load(“命名空间”)?
    大概是这样写的…

    这是c#中的反射csdn文章


    访问器?get set?

    在这里插入图片描述

    这玩意不就是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!");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    timer.Elapse为每2秒启动一次

    Boy和Girl的事件分别为Jump和Sing
    在这里插入图片描述
    所以他会一直运行这个

    这篇写的挺好的


    集合


    泛型


    正则表达式,直接看例子比较好懂
    这里有一些例子

    主要功能是字符串替代之类的?..


    文件I/O,这部分遇到的时候再考虑怎么写吧,先这样…


    特性,给人的感觉是画蛇添足,不就是注解吗?!
    了解特性看这里

  • 相关阅读:
    【GD32F427开发板试用】IAR flash loader 下载GD32F427流程简要分析
    ip地址怎么改网速快
    Hash的底层结构
    JavaSE | 顺序表练习
    前端模块化!
    数据结构应用大全
    Win10垃圾清理?3个方法有效解决空间不足问题!
    ubuntu下docker环境使用GPU配置
    初出茅庐的小李博客之单片机基础知识
    【JavaScript】JQuery基础使用
  • 原文地址:https://blog.csdn.net/dc20200829/article/details/128014682