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

Ctrl+K+D:快速对齐代码

Ctrl+Z:撤销

Ctrl+S:保存(一定要经常保存!)

Ctrl+J:快速弹出智能提示

Shift+End 、Shift+Home

Ctrl+K+C:注释所选代码

Ctrl+K+U:取消对所选代码的注释

F1:转到帮助文档

折叠冗余代码:#Region 和#EndRegion(Android Studio也可以自定义折叠代码 //region //endregion 快捷键 Ctrl+Alt+T)

单行注释: //

多行注释:/要注释的内容/

文档注释: /// 多用来解释类或者方法

😜数据类型

编程基础就不强调了,主要看看拼写和其他语言有什么不同就行了

在这里插入图片描述

除了这些值类型还有引用类型,包含对象类型,动态类型,字符串类型

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

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

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

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

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

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

😜转义字符

在这里插入图片描述

😜运算符

仍然是直接上表格图,编程基础。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

😜判断/循环

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

判断语句: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值。例如:int? num = 1; double? num= new double?();

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

例如 A=B??C 如果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,以此类推

枚举可以和结构体结合:

public struct Person{

public string _name;//字段

public int _age;

public Gender _gender;

}

public enum Gender {

男,

}

Person zsPerson;

zsPerson._name = “张三”;

zsPerson._age = 21;

zsPerson._gender = Gender.男;

😜类/函数

类仍然是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修饰的虚方法类似实现。示例

namespace Test

{

abstract class Shape

{

abstract public int area();

}

class Rectangle: Shape

{

private int length;

private int width;

public Rectangle( int a=0, int b=0)

{

length = a;

width = b;

}

//注意着的override

public override int area ()

{

Console.WriteLine(“Rectangle 类的面积:”);

return (width * length);

}

}

class RectangleTester

{

static void Main(string[] args)

{

Rectangle r = new Rectangle(10, 7);

double a = r.area();

Console.WriteLine(“面积: {0}”,a);

Console.ReadKey();

}

}

}

//虚方法示例

namespace Test

{

class Shape

{

protected int width, height;

public Shape( int a=0, int b=0)

{

width = a;

height = b;

}

// 关键字virtual

public virtual int area()

{

Console.WriteLine(“父类的面积:”);

return 0;

}

}

class Rectangle: Shape

{

public Rectangle( int a=0, int b=0): base(a, b)

{

}

public override int area ()

{

Console.WriteLine(“Rectangle 类的面积:”);

return (width * height);

}

}

class Triangle: Shape

{

public Triangle(int a = 0, int b = 0): base(a, b)

{

}

public override int area()

{

Console.WriteLine(“Triangle 类的面积:”);

return (width * height / 2);

}

}

class Tester

{

static void Main(string[] args)

{

Rectangle r = new Rectangle(10, 7);

Triangle t = new Triangle(10, 5);

c. area ();

c. area ();

Console.ReadKey();

}

}

}

😜接口

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

interface ITestInterface

{

void TestInterfaceMethod();

}

public class Test : ITestInterface{

public void TestInterfaceMethod()

{

}

}

😜命名空间

Namespace这玩意就是用来方便管理的,而且在计算机中相同的设计思想到处可见,比如同一个文件夹下不同有同名的文件,你放在不同文件夹下可以有同名文件。

其他编程语言比如Java有包路径,不同路径名字可以有同名的类。这种思想方便管理文件/代码。

namespace first_space

{

class namespace_cl

{ }

//比如这样,程序是会报错的

class namespace_cl

{ }

}

//但是你是下面的状态就不会报错

namespace first_space

{

class namespace_cl

{ }

}

namespace second_space

{

class namespace_cl

{ }

}

到这有的人就开始有疑问了:如果是不同的文件或者想访问其他的空间怎么办呢?

细心的已经发现了,就和Java的导包一样,C#使用using导入空间,在每个编程文件的最上面几行都是这样的引入,想要哪些空间的功能导入哪个。

这时候又有人有疑问了,能不能修仙小说那样天外有天,天上还有天。能不能命名空间套命名空间,套套套,此处禁止套娃。

答案是可以的,引入的时候:using namespaceone.namespacetwo 用英文符号.即可,跟Java包路径同理。

😜预处理器

从字面理解就是提前对信息进行处理。她确实也是这样的,她会根据你指定的条件,只编译满足条件的代码,不满足条件的代码不编译。既区分了软件版本,代码还在一块,管理方便。预处理指令是#开始的,且只能作为开头,一般指令单独占一行。都有哪些指令在这就不单独写了。在Unity中指令挺有用的,因为PC是键盘,Android事件是手势,用预处理提前写好不同端的不同实现代码(当然她们功能可能是一致的),打包发布的时候利人利己。

😜异常

哎呀,这个老四件套了:try、catch、finally 和 throw

  • try: 一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。

  • catch: 程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。

  • finally: finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。

  • throw: 当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

架构师筑基包括哪些内容

我花了将近半个月时间将:深入 Java 泛型.、注解深入浅出、并发编程.、数据传输与序列化、Java 虚拟机原理、反射与类加载、高效 IO、Kotlin项目实战等等Android架构师筑基必备技能整合成了一套系统知识笔记PDF,相信看完这份文档,你将会对这些Android架构师筑基必备技能有着更深入、更系统的理解。

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

注:资料与上面思维导图一起看会更容易学习哦!每个点每个细节分支,都有对应的目录内容与知识点!



这份资料就包含了所有Android初级架构师所需的所有知识!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

架构师筑基包括哪些内容

我花了将近半个月时间将:深入 Java 泛型.、注解深入浅出、并发编程.、数据传输与序列化、Java 虚拟机原理、反射与类加载、高效 IO、Kotlin项目实战等等Android架构师筑基必备技能整合成了一套系统知识笔记PDF,相信看完这份文档,你将会对这些Android架构师筑基必备技能有着更深入、更系统的理解。

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

注:资料与上面思维导图一起看会更容易学习哦!每个点每个细节分支,都有对应的目录内容与知识点!

[外链图片转存中…(img-2fTKqQdE-1712017436292)]
[外链图片转存中…(img-6ezB0JdN-1712017436292)]
这份资料就包含了所有Android初级架构师所需的所有知识!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值