C# 快速入门笔记

2023-05-16

最后更新时间2020.04.10

C# 快速入门精简笔记

  • Chapter 0 前言
  • Chapter 1 基础
    • 1.1 简介
    • 1.2 环境
    • 1.3 程序结构
    • 1.4 基本语法
    • 1.5 数据类型
      • 1.5.1 value types
      • 1.5.2 Reference types
        • 1.5.2.1 对象(Object)类型
        • 1.5.2.2 动态(Dynamic)类型
        • 1.5.2.3字符串(String)类型
      • 1.5.3 Point types
      • 1.5.4 类型转换
    • 1.6 变量
    • 1.7 常量
    • 1.8 运算符
    • 1.9判断
    • 循环
    • 封装
    • 方法
    • 可空类型
    • 数组
  • Chapter 2 进阶
    • 特性
    • 反射
    • 属性
    • 索引器
    • 委托

Chapter 0 前言

在学习Modbus时,采用C#写了一个client端,用以模拟TCP通信。设计界面时突然发现这与我之前在Android Studio上用Java写Android APP的过程极其相似。

在这里插入图片描述
这好比你学了PR后再去学LR的感觉是一样的,套路如此相似!

本文在参考菜鸟教程的基础上,进行了精简与相关问题解惑,仅供自己强化学习使用。

Chapter 1 基础

1.1 简介

C# 是由微软开发的一种面向对象的编程语言,是 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。

C#特点有:

现代的、通用的编程语言面向对象
面向组件容易学习
容易学习结构化语言
产生高效率的程序可以在多种计算机平台上编译
.Net 框架的一部分强大的编程功能

C# 一些重要的功能:

布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows

1.2 环境

C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。

.Net 框架(.Net Framework)用于开发:

  1. Windows 应用程序
  2. Web 应用程序
  3. Web 服务

C# 开发使用的 IDE:

windows: visual studio 2019(我使用的)
Linux: Mono

当然Visual Web Developer之类的也是可以的。

1.3 程序结构

using System;         //在程序中包含 System 命名空间,一个程序一般有多个using
namespace HelloWorldApplication  //namespace 声明,个 namespace 可以一系列的类
{
   class HelloWorld //一个类
   {
      static void Main(string[] args)      //类方法,main()方法是所有 C# 程序的 入口点。
      {
         /* 我的第一个 C# 程序*/
         Console.WriteLine("Hello World");  //定义在 System 命名空间中的 Console 类的一个方法
         Console.ReadKey();    //等待按键
      }
   }
}

由此可知,一个 C# 程序主要包括以下部分:

  1. 命名空间声明(Namespace declaration)
  2. 一个 class
  3. Class 方法
  4. Class 属性
  5. 一个 Main 方法
  6. 语句(Statements)& 表达式(Expressions)
  7. 注释

注:代码文件以.cs保存,执行无误后会在obj文件夹下生成对应的exe可执行文件。

在这里插入图片描述
在这里插入图片描述

1.4 基本语法

using 关键字

在任何 C# 程序中的第一条语句都是:using System;

using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。

class 关键字

class 关键字用于声明一个类。

C# 的注释
同C语言

成员变量

变量是类的属性或数据成员,用于存储数据。

成员函数

函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。

标识符

标识符是用来识别类、变量、函数或任何其它用户定义的项目

类的命名必须遵循如下基本规则:

  1. 标识符必须以字母、下划线或 @ 开头,后面可以字母、数字、下划线、@。
  2. 标识符必须不包含任何嵌入的空格或符号。
  3. 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
  4. 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
  5. 不能与C#的类库名称相同。

这些与其他面向对象语言C++,JAVA相似。

关于关键字:

1、C#关键字:用来定义C#语言的字符串记号,它们是对编译器具有特殊意义的预定义保留标识符。

2、上下文关键字:仅在特定的语言结构中充当关键字的标识符。与关键字的不同在于上下文关键字可在其他部分代码中被用作标识符。它不是 C# 中的保留字。

在这里插入图片描述

1.5 数据类型

1.值类型(Value types)
2.引用类型(Reference types)
3.指针类型(Pointer types)

1.5.1 value types

值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。

在这里插入图片描述

1.5.2 Reference types

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。???这不是指针吗?戳我解惑。

换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string

1.5.2.1 对象(Object)类型

对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱

object obj;
obj = 100; // 这是装箱

1.5.2.2 动态(Dynamic)类型

可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的

声明动态类型的语法:

dynamic <variable_name> = value;

如:

dynamic d = 20;

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。(是不是与解释型语言、编译型语言的区别有点类似?)

1.5.2.3字符串(String)类型

字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。允许给变量分配任何字符串值。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

例如:

String str = "runoob.com";

一个 @引号字符串:

@"runoob.com";

C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如:

string str = @"C:\Windows";

等价于:

string str = "C:\\Windows";

@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内

string str = @"<script type=""text/javascript"">
    <!--
    -->
</script>";

用户自定义引用类型有:class、interface 或 delegate

1.5.3 Point types

指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。想必大家已经拿捏了。

1.5.4 类型转换

  1. 隐式类型转换 - C# 默认的以安全方式进行的转换, 不会导致数据丢失。如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
  2. 显式类型转换 - 显式类型转换,即强制类型转换,会造成数据丢失。

在这里插入图片描述

1.6 变量

1.7 常量

1.8 运算符

1.9判断

循环

封装

方法

可空类型

数组

Chapter 2 进阶

特性

反射

属性

索引器

委托

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 快速入门笔记 的相关文章

  • Redhat(红帽) Linux软件包管理rpm概述

    1 软件包管理的内涵 习惯了Windows上安装软件的方式 下载安装包 xff0c 双击运行 xff0c 点击几次下一步后 xff0c 软件就安装完了 我也是常年使用Windows xff0c 习惯了Windows的方式 xff0c 却从来
  • FreeRTOS(一):裸机系统与多任务系统

    裸机系统与多任务系统 3 1裸机系统3 1 1轮询系统3 1 2前后台系统 3 2多任务系统总结 3 1裸机系统 裸机 xff1a 英文名是Bare machine Bare metal xff0c 指没有配置操作系统和其他软件的电子计算机
  • FreeRTOS(二):数据结构—列表与列表项

    数据结构 列表与列表项 4 列表与列表项4 1链表4 1 1单向链表4 1 2双向链表4 1 3链表与数组的对比 4 2FreeRTOS中链表的实现4 2 1实现链表节点1 定义链表节点数据结构2 链表节点初始化 4 2 2实现链表根节点1
  • Cordova技术初次学习

    文章目录 前言一 Cordova 是什么 xff1f 二 关于Cordova环境搭建前提要求 xff1a 1 利用npm 安装2 创建应用3 添加平台4 运行 三 结语 前言 这是一篇关于Cordova入门学习的记录文章 一 Cordova
  • 修改datax,Java获取mongo,Document转换成json,遇到的类型问题,用JsonWriterSettings解决

    java numberlong 解决方法 在修改datax插件的时候遇到了问题 问题 xff1a 我们存在mongo中带有数据类型 xff0c 如图 我们直接将Document转json会带上类型 且在mongo java driver的j
  • VirtualBox 主机ping不通虚拟机的解决办法

    visualBox的主机是ping不通虚拟机的 但是虚拟机能ping通主机 要先进行以下配置 第一个网卡为NAT Network 在网络配置中 xff0c 新建一个网卡2为桥接网卡 新建共享文件夹 国外一个老哥说的 xff0c 不新建共享文
  • 基于python实现相关模板匹配跟踪之SSDA算法

    基于python实现相关模板匹配跟踪之SSDA算法 1 单张图片匹配 1 1代码 1 2 效果 2 视频跟踪 2 1代码 2 2 效果 2 3 优化思路 3 参考链接 相关模板匹配跟踪和质心跟踪都是传统算法 相较于AI算法 具有极快的处理速
  • AGV小车经典算法设计及应用

    1 AGV小车的发展背景 在现代化工业的发展中 xff0c 提倡高效 xff0c 快速 xff0c 可靠 xff0c 提倡将人从简单的工作中解放出来 机器人逐渐替代了人出现在各个工作岗位上 机器人具有可编程 可协调作业和基于传感器控制等特点
  • 扒完社交网络关系才明白,《权力的游戏》凭什么是神作

    摘要 xff1a 凡人皆有一死 没错 xff0c 但那是 凡人 会数据的 xff0c 都不是凡人 DT君当你看冰火的时候 xff0c 你在看什么 xff1f 作为一个 冰与火之歌 的资深迷弟 xff0c 看到如今的冰火电视 Valar Mo
  • 数字IC设计入门(1)初识电路板和芯片

    本文为入门级同学和零电子基础同学准备 xff0c 有一定电子基础的请直接忽略 xff0c 芯片从本质上说还是电路 xff0c 因此有必要从电路板开始了解芯片工作过程 xff0c 下面将简单介绍一块电脑主机板 电路板已在我们生活中无处不在 x
  • 数电4_4——常见组合逻辑电路(3)数据选择器

    数据选择器 1 1 工作原理1 1 1 电路图1 1 2 写出逻辑表达式 1 1 3 对应真值表 1 2 应用1 2 1 用双四选一设计八选一1 2 2 用数据选择器设计组合逻辑电路1 2 2 1 用四选一实现1 2 2 2 用八选一实现1
  • 机器学习实战之科比数据集分析(随机森林寻最优值参数)

    文章目录 总体思路分为三部1 查看数据 xff0c 对数据进行清洗 xff0c 规约1 1 查看数据1 2 数据清洗 规约1 3 删除不相关的特征1 4 数据one hot处理 2 建立模型 xff0c 挑选出最优参数2 1 准备数据集 训
  • 一文读懂anchor-base和anchor-free

    1 从Faster RCNN看Anchor Faster RCNN相对于Fast RCNN的一个改进是引入了RPN网络 xff0c RPN用于区域推荐 xff0c 替换了此前的SS算法使得网络在整体上更加的CNN化 那么RPN是怎么进行区域
  • 用MATLAB提取字符串中的特定类别(数字等)

    如果一个字符串中包含多种格式的字符 xff0c 想把其中特定的一种提取出来 xff0c 有一个函数可以轻松解决 xff1a TF 61 isstrprop str category 确定输入文本中的字符是否为指定的类别 xff0c 如字母
  • 云计算基础与应用 第三章 云服务器

    以下为自己个人做的笔记 xff0c 不带有商业性质 xff0c 纯粹交流分享学习资料 xff0c 如有侵权 xff0c 请联系作者 xff0c 作者看到会第一时间删除 xff0c 如有侵权敬请见谅 文章目录 3 1 云服务器概述3 2 云服
  • 工作记录:NX系统烧录

    一 固件 BSP下载 https developer nvidia com embedded L4T r32 Release v4 2 t186ref release aarch64 Tegra Linux Sample Root File
  • YOLO v5获取目标的坐标位置,以及将crop融合到全黑背景中

    可能很多人不知道我这个标题后面这句话的含义 xff0c 因为这个场景可能很多地方压根用不到 xff0c 暂时不细说 我是上个月开始接触yolov5 v6 2版本做目标识别的 xff0c 也没有什么深度学习和pytorch的概念 xff0c
  • slam的简单操作以及原理

    slam的原理以及应用 1 新建工作文件夹 使用mkdir命令新建文件夹 slambook和ch1文件夹 xff0c 并利用cd命令进入ch1文件下 xff0c 截图如 2 编写helloslam小程序 使用vim命令创建helloslam
  • 遗传算法实例解析

    遗传算法实例及MATLAB程序解析 遗传算法Genetic Algorithms xff0c GA xff09 是一种基于自然选择原理和自然遗传机制的搜索 xff08 寻优 xff09 算法 xff0c 它是模拟自然界中的生命进化机制 xf
  • nginx 反向代理 获取客户端真实IP和域名以供日志分析

    场景 xff1a 客户网站或者移动APP在请求到达后端服务之前 xff0c 会经过层层代理的转发 典型的是CDN xff08 反向代理 43 Squid缓存 xff09 xff0c 如果是带有安全或者WAF功能的则结构要更为复杂些 一般的解

随机推荐

  • Linux服务器上安装配置VNC Server

    前言 项目需要在Linux上进行数据抽取的相关任务 xff0c 使用的是Kettle这一ETL工具 xff0c 但是服务器就一个主机 xff0c 这里对应Kettle的job和trans等相关配置就无法进行 xff0c 所以需要使用远程图形
  • 几种简单的插值方法与实例

    插值方法及MATLAB实例解析 插值 xff1a 已知有限个已知数据点 xff0c 求得的插值函数必须过这些点 xff0c 然后在这个范围内用插值函数求得未知数据点的值 拟合 xff1a 已知有限个已知数据点 xff0c 但拟合函数不用过每
  • 模拟退火算法及实例解析

    模拟退火算法及MATLAB实例 同遗传算法一样 xff0c 模拟退火算法也是现代优化算法的一种 他对于解决组合优化问题 xff0c 如TSP xff0c JSP等问题效果较好 关于模拟退火算法的详细介绍 xff0c 可以参考这里模拟退火算法
  • MATLAB图像的读取和显示

    MATLAB图像的读取和显示 更新日期2021 06 08更新内容修正一些文字错误 xff0c 优化排版 直接看代码吧 xff0c 注释写的很清楚了 span class token operator span 图像读取 xff0c 参数为
  • 图像的点运算1

    图像的点运算MATLAB实例代码 span class token operator span span class token operator span 图像的点运算 span class token number 1 span spa
  • 二维插值-MATLAB

    二维插值与MATLAB实例解析 一 插值节点为网格节点二 插值节点为散乱节点Addition xff1a xff08 1 xff09 学会查看matlab帮助文档 xff08 2 xff09 matlab脚本类型 xff08 3 xff09
  • 曲线拟合-最小二乘法

    线性最小二乘法及matlab例程 线性最小二乘法 曲线拟合 xff1a 已知平面上一组横坐标互不相同的点 xff0c 寻求一个函数 xff0c 使其与所有数据点最为接近 拟合函数 xff1a f x 61
  • 时间序列分析

    确定性时间序列分析方法 确定性时间序列分析方法 一 移动平均法二 指数平滑法1 一次指数平滑法2 二次指数平滑法3 三次指数平滑法 三 差分指数平滑法1 一阶差分指数平滑法2 二阶差分指数平滑模型 四 具有季节特点的时间序列的预测 时间序列
  • Linux系统下用Ventoy制作Windows启动盘

    Ubuntu 18 04 制作Windows10企业版启动盘 xff08 U盘 xff09 概要 ubuntu18 04 xff0c ros对应的是melodic版本 转回Windows下使用Robot Studio时 xff0c 由于系统
  • Ubuntu 18.04开机卡在grub,引导修复的2种实用方法

    解决ubuntu18 04开机卡在grub命令行界面的问题 前情概要 xff1a 由于windows重装系统 xff0c 导致ubunru18 04的引导出了问题 下面提供两种解决方案 xff0c 本人采用第二种方式成功修复 知识补充 xf
  • Modbus Slave学习笔记

    第一章 初识Modbus 1 1什么是Modbus 简而言之 xff0c Modbus通信协议是工业领域通信协议的业界标准 xff0c 并且是当前工业电子设备之间相当常用的连接方式之一 Modbus 协议是应用于电子控制器上的一种通用语言
  • command 'gcc' failed with exit status 1错误问题的解决办法

    在写Python代码的时候 xff0c 需要用到psutil模块 xff0c 需要安装 在安装psutil 模块的时候出现的问题 xff0c 重新安装了gcc等各种我能想到的 xff0c 不过还是不行 网上说是其实安装一个对应的devel环
  • Ubuntu 18.04 配置Ros melodic

    更新时间2021 04 09 ROS简介 1 添加ROS软件源 你可能对源的概念理解不深 xff0c 没关系 xff0c 先简单理解为系统获取资源的地址 xff0c 跟着做即可 设置软件源 xff1a 国外 xff1a sudo sh c
  • Linux进程管理(一) Linux进程的基本概念

    Linux进程的基本概念 最后更新时间2020 04 09 Ubuntu linux的所有任务都是在操作系统内核的调度下由CPU执行 xff0c 很多时候 xff0c Linux是将任务和进程的概念合在一起 进程的标准定义 xff1a 进程
  • Ubuntu wifi适配器未找到

    先蓝牙共享手机网络或在usb共享打开 软件与更新 xff0c 进入 附加驱动 选项卡 xff0c 如果网络正常 xff0c 且源设置正常 xff0c 一般能搜到对应的无线网卡驱动 xff0c 安装之后再重启电脑就可以了 要注意你的bois是
  • ROS简介

    1 什么是 ROS 机器人是一个系统工程 xff0c 它涉及机械 电子 控制 通信 软件等诸多学科 以前 xff0c 开发一个机器人需要设计机械 画电路板 写驱动程序 设计通信架构 组装集成 调试 以及编写各种感知决策和控制算法 xff0c
  • Linux用户及权限管理(一)用户和组

    更新时间2020 04 09 1 ubuntu 用户系统概述 ubuntu linux 是一个多用户多任务的分时操作系统 任何一个要使用系统资源的用户 xff0c 都必须先要向系统管理员申请一个账号 xff0c 然后以这个账号的身份进入系统
  • Linux用户及权限管理(二)用户和组管理命令

    更新时间2020 05 12 在第一节中将了图形界面的用户管理 xff0c 本节讲解与用户和组管理相关的shell命令 1 配置文件 第一节中讲到 etc passwd文件 xff0c 它记录了当前操作系统中所有用户的基本信息 xff1a
  • Linux用户及权限管理(三)权限管理

    更新时间2020 05 13 在使用windows的时候关于权限管理的操作不多 xff0c 大家遇到比较多的应该是 xff1a 使用管理员身份才能正常运行某个程序 xff0c 或者删除某个文件 xff1b hosts文件无法修改 xff0c
  • C# 快速入门笔记

    最后更新时间2020 04 10 C 快速入门精简笔记 Chapter 0 前言Chapter 1 基础1 1 简介1 2 环境1 3 程序结构1 4 基本语法1 5 数据类型1 5 1 value types1 5 2 Reference