熬夜爆肝万字C#基础入门大总结【建议收藏】

往期文章分享

点击跳转=>熬夜再战Android从青铜到王者-UI组件快速搭建App界面
点击跳转=>熬夜再战Android从青铜到王者-几个适配方案
点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇
点击跳转=>Unity粒子特效系列-龙卷风预制体做好了,unitypackage包直接用!
点击跳转=>姐姐喊我解锁套娃新技能:FairyGUI在Unity中实现List嵌套List/立体画廊等,玩出花儿来
点击跳转=>Unity新手必备5款宝藏插件–价值上千元白嫖最新版

??关于作者

熬夜爆肝万字C#基础入门大总结【建议收藏】
由上图看出.NET Framework是.NET最重要的核心技术。Framework提供了多语言开发,而C#是其中核心语言。
熬夜爆肝万字C#基础入门大总结【建议收藏】
除了这些值类型还有引用类型,包含对象类型,动态类型,字符串类型

字符串类型:string或者String,注意s大小写,平时都能用,但也有也小区别。

字符串有个@符号可以将转移字符当成普通字符,且@符会保留字符串里面的换行符空格符等

例:string str=”D:alibaba”; 等价于string str=@”D:alibaba”;

动态类型:dynami,他会根据内容自动存储对应类型

例:dynamic str=”这是字符”; dynamic number=10; 就像前端的var类型

对象类型:ogject,所有类型的最低基类,能分配任何类型的值,麻烦就是用的时候可能经常得进行类型转换。

??转义字符

熬夜爆肝万字C#基础入门大总结【建议收藏】
熬夜爆肝万字C#基础入门大总结【建议收藏】
熬夜爆肝万字C#基础入门大总结【建议收藏】

??判断/循环

逻辑判断仍然是编程老鸟的基基础,只是简单概括一下

判断语句:if else switch

循环语句:while for foreach do…while break continue

??访问修饰符

C#可以设置使用者的访问权限,这样开发者可以指定该模块或逻辑是公开,封闭,还是指定访问者。不知道其他语言什么样,跟Java是一样样的。

  1. public:所有对象都可以访问;
  2. private:对象本身在对象内部可以访问;
  3. protected:只有该类对象及其子类对象可以访问
  4. internal:同一个程序集的对象可以访问;
  5. protected internal:访问限于当前程序集或派生自包含类的类型。

??可变类型/合并运算符

可空类型(Nullable):表示其基础类型除了默认的值外,再添加一个null值。例如:intnum = 1; doublenum= new double);

Null合并运算符():如果第一个操作数为null,则返回第二个操作数,否则返回第一个,就像Java的运算。

例如 A=BC 如果B为空则将C赋值给A,如果B 不为空则将B赋值给A。

??数组

数组类型是若干个数据类型相同的数据元素组成的数据结构。C#也是分为一维数组和多维数组,多维数组又包括矩形数组和交错数据。

还有一个参数数组,可以传递未知数量参数给函数。 这个就像Java中的(int… num)。

例ParamArray app = new ParamArray(); int sum = app.AddElements(512, 720, 250, 567, 889);

数组类型基本是System.Array类的派生类,快捷键Ctrl+左键进入源码,快速学习都有什么功能实现。

??结构体

她能用单一变量存储多个数据类型,举例:一个书变量,可以存作者,标题,出版社,价钱等基础变量。超好理解,和Java的实体一样,就是需要struct关键字来修饰创建结构体。特点:

  1. 结构可带有方法、字段、索引、属性、运算符方法和事件。
  2. 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数 (默认)是自动定义的,且不能被改变。
  3. 与类不同,结构不能继承其他的结构或类。
  4. 结构不能作为其他结构或类的基础结构。
  5. 结构可实现一个或多个接口。
  6. 结构成员不能指定为 abstract、virtual 或 protected。
  7. 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
  8. 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

结构体的字段可以加前缀”_”来和变量区分
结构体快捷键:首选选中你要自动完成的变量,先按ctrl+R,再按ctrl+E这两个组合键,可以自动生成属性中的get和set方法

??枚举

就是命名一组整型常量,不能继承或传递继承,只能当常量使用。举例:enum Number{one,two,three}; 则Number.one等于0 Number.two等于1,以此类推
枚举可以和结构体结合:

??类/函数

类仍然是class修饰,在class前面可以指定对类及成员的访问规则,若没写则类默认是internal,成员访问是private。
例:public class ClassName { }
函数和Java同样含有构造函数和带参函数,在这多了一个析构函数,是一个特殊的成员函数。是一个新知识需要记一下。
析构函数以~作为前缀,不需要任何修饰符,不返回值,也不带参数,不能继承或重载。官方文档大致意思就是用来释放资源的,只不过并非是在不使用的时候立即释放,她是懒惰的,垃圾回收机制会在适当的时候回收,比如内存紧张,关闭程序等时候。这和Android里面的onDestory有异曲同工之妙,同样的,也有GC方法来强制回收。

??继承/多重继承

继承是面向对象设计的最重要概念之一,一个类继承自另一个类,举例:
class A{ } class B:A{ } B继承自A,B可以称为派生类也可以称为子类,A可以称为基类也可以称为父类。(派生类和基类,子类和父类) 。 B拥有访问A的能力,形象点说就是子类可以拿到父类的财产,父类拿不到子类的财产。
C#不支持多重继承,我咨询过C++同事,C++支持多重继承。

??多态

面向对象程序的核心功能之一,是同一个行为具有多个不同表现的能力。C#和Java都是面向对象的,她们的多态思想基本是一致的。优点多多:

  1. 消除类型间耦合关系
  2. 具有可扩充性,增强灵活性
  3. 接口性,实现简单

C#包含静态多态动态多态,静态多态又包含:函数重载和运算符重载。
函数重载:就是相同的函数名有多个定义。函数的参数类型或个数不同来实现。例如:
int test(int num1){}
int test(int num1,int num2){}
int test(int num1,string str1){}
运算符重载看示例更形象,但是示例代码多,就不在这记了,感兴趣的可以自己去搜索学习
动态重载使用的是用abstract创建的抽象类,另一个事借助关键字virtual修饰的虚方法类似实现。示例

??接口

接口使用interface关键字声明,和类class的声明差不多,默认是public类型的。有个当有多个类,多个类有多个相同的方法,使用接口来实现方便管理,且不会丢失。和Java使用基本是一致的。示例:

interface ITestInterface{    void TestInterfaceMethod();}public class Test : ITestInterface{public 来源:芝麻粒儿
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月11日
下一篇 2021年9月11日

相关推荐