当前位置: 首页 > news >正文

C#快速入门基础

本篇文章从最基础的C#编程开始学习,经过非常优秀的面向对象编程思想和方法的学习,为C#编程打下基础。

第 01 章 C#开发环境之VS使用和.NET平台基础

1.1 Visual Studio 开发环境

1.1.1 硬件环境

 i5CPUi5CPU(建议 4核 4线程或以上 ,新机器 6核以上最好 )+ 8G 内存 (有条件的 16G16G) + 至少 200 G系统 固态硬盘,电脑时间不要超过 4年最好。如果是笔记本 CPU 至少 i7 ,否则运行会慢。

1.1.2 操作系统

建议 win10 ,如果是 win7 需要 64 位。

1.1.3 编程语言软件

首先要安装的就是 VS2019 ,如果有新的版本,请按照新阁教育官方的建安装,不要随便自己装 ,如果 已经安装过 其他 低版本,可以保留同时安装 2019 即可,不要轻易除其他版本,否则会面临再次安装不上的情况。

1.2 Debug 和 Release 的区别

1.2.1 概念上的不同

Debug 的意思是调试, 也就是我们尝试着运行一下程序。在运行中,可以通过断点观察程序的执行过程。 Release 的意思发布,也就是我们的程序开发和调试都成功了, 这个时候 可以选择发布程序。正式 作为生产环境的应用软件。

1.2.2 断点与调试

Debug 在任何情况下,都可以打断点观察变量。 可以打断点后 让程序一行一行的执行。从而观察程序逻辑和变量的值。而 ReleaRelease 在很多情况下 无法直接断点,并且观察数据可能存在不正确的情况。

1.2.3 生成与优化

Debug 所生成的文件,包含很多调试信息,生成的文件比较大。不做任何的优化代码任务 ,仅供 项目开发过程中使用 。Release 不包含调试信息,生成的文件较小。有时候需要做性能优化,以便提升运行速度。项目结束最后使用 Release 发布。

第 02 章 命名空间和类、数据类型、变量和代码规范

2.1 命名空间的重要作用

命名空间 ,又称为 “名称空间”。命名空间,分为系统的命名空间和自定义命名空间。命名空间的名字默认和项目的名字是一样的。

2.1.1 命名空间使用规范和注意问题

必须把命名空间的名字放到关键字namespace 后面,并且命名空间不能用数字和特殊字符开始,建议大家都用字母开头。 当我们引入一个命名空间的时候使用 using 关键字,后面跟上命名空间 的名称。

需要注意的问题:

第一 ,命名空间没有包含关系的说法。

第二、项目设计中,命名空间通常会统一规范,通常是自己的项目团队给出标准 。

第三、命名空间不建议随便修改。
第四、命名空间不正确的使用,会导致类无法访问。

第五、写的类一定要写在命名空间里面。

2.2 类的组成和使用分析

类是程序的基本单元。

2.2.1 类的内容组成

软件所封装的这些功能无非就是数据处理和业务逻辑处理

在这里,我们再把命名空间、类的关系,通过下面的图做一个整理:

通过这个图也可以清楚的看到,一个类的内部通常包括字段、属性、构造方法、实例方法等

针对类的访问修饰符我们常用的是 public和 internal,当我们使用 public修饰的时候,表示这个类在任何地方都可以被使用。如果我们对类没有做任何的修饰,默认就是interanl,表示内部的。

说到访问修饰符,必须要强调一下,在类的内部所有的成员都有修饰符,比如字段,我们一般使用 private表示只能在类的内部使用; 属性一般都是 public;方法可以 public也可以 private。

2.3 C#的数据类型和变量

2.3.1 C# 常用数据类型概述

在C#中常用的数据类型可以分为两大类,分别 是“数值型 ”和“引用类型 “。其中 值类型包括整型、浮点型、字符型、布尔型、枚举 、日期 型等;引用类型包括类、接口、数组、委托、字符串等。

2.3.2 C# 中的值类型

整型 ,就是存储整数的类型,按照存储值的范围不同, C# 语言将整型分成了 byte 类型、 short类型、 int 类型、 long 类型等,并分别定义了有符号数和无符号数。有符号数可以表示负数,无符号数仅能表示正数。 常用的整数类型及其表示范围如下表所示:

类型取值范围
byte无符号数,占用1个字节,0~2^3-1
short有符号数,占用 2个字节, -2^{15}2^{15} -1
int有符号数,占用 4个字节, ,-2^{31}2^{31}-1
long有符号数,占用 8个字节, ,-2^{63}2^{63}-1
sbyte有符号数,占用 1个字节, ,-2^{7}2^{7}-1
ushort无符号数,占用 2个字节, ,0〜2^{16} -1
uint无符号数,占用 4个字节, ,0〜2^{32} -1
ulong无符号数,占用 8个字节, ,0〜2^{64} -1

浮点型 ,是指小数类型,浮点型在 C# 语言中共有两种, 分别是单精度浮点型和双精度浮点型。具体使用如下表所示。

类型取值范围
float单精度浮点型,占用 4个字节,最多保留 7位小数
double双精度浮点型,占用8个字节,最多保留 16 位小数

字符型, 只能存放一个字符, 占用两个字节,能存放一个汉字。字符型用 char 关键字表示,存放到 char 类型的字符需要使用单引号括起来,例如 'a' 、'汉' 等。
字符串类型, 能存放多个字符,它是一个引用类型,在字符串类型中存放的字符数可以认为是没有限制的,因为其使用的内存大小不是固定的而是可变的。使用 string 关键字来存放字符串类型的数据。字符串类型的数据必须使用双引号括起来,例如"abc" 、"123" 等。

在 C# 语言中还有一些特殊的字符串,代表了不同的特殊作用。由于在声明字符串类型的数据时需要用双引号将其括起来,那么双引号就成了特殊字符,不能直接输出, 这就需要转义字符,因此“转 义字符 ”的作用就是输出这个有特殊含义的字符。转义字符非常简单,常用的转义字符如下所示。

转移等价字符
\‘单引号
\"双引号
\\反斜杠
\r回车
\n换行
\t水平制表符

布尔类型 ,在 C# 中布尔类型使用 bool 来声明,它只有两个值,即 true 和 false 。当某个值只有两种状态时可以将其声明为布尔类型。布尔类型的值被经常用到条件判断的语句中
日期类型, 在 C# 中,使用 datetime 来表示日期类型。

2.3.3 C#中变量的基本使用

变量表示一个数据存储空间, 也就是内存地址的别名 。

变量定义的三个要素变量类型,用来规定变量的数据类型。变量名称,起名要有意义,好记忆。变量的值,变量对应的具体内存数据。

2.3.4 C#中变量的命名规范

C#语言严格区分大小写! 比如我们写的 Name和 name是两个不同的变量,这点要特别注意。这里把常用的命名 规范 给大家总结如下:
第一、类、属性、方法命名使用 Pascal命名法,也就是首字母大写。比如 Person类、SubjectScore类;属性 Name、Age、DateOfBirth;方法 Add、GetResult、QueryScore等。
第二、 变量命名规范 。变量组成由英文字母( A~Z,a~z)、数字 0~9)、下划线 (_),除此之外不能含有其他字符。 变量开头只能以字母或下划线开头比如 _age,禁止使用 C#关键字( 如int、this、 class...),特别注意“$”符号在 C#中也不能使用
第三、命名要有意义。 尽量用对应的英文命名,比如年龄使用 age,除循环变量外,尽量不用单个字符 命名变量 。方法内的局部变量使用 Camel(意思是骆驼 命名法,首字母小写。比如 stuName、stuAge。

2.4 程序注释和MSDN帮助文档

2.4.1 程序注释的方法

正确使用注释 ,对代码做出说明, 可以便别人阅读和后续维护使用。 作为开发者能否规范写出注释也是非常重要的。不过我们要清楚注释是不参与编译的, 也就是对程序本身没有任何响。
注释类型分为单行注释和文档注释。单行注释是对单独一条语句做的注释,使用两个//表示文档注释一般都是在方法、类等的前面做的注释,内容会更多,注释的时候需要使用三个斜杠 ///同按回车键,自动生成注释结构。

关于注释的建议:关键性的语句要添加注释 ;类名前应该使用文档注释,说明类的简单功能和使用方法。复杂方法前面应使用文档注释,说明方法的功能、参数的含义、返回值等。

2.4.2 MSDN 的使用

我们在学习中经常会遇到不懂的内容,尤其是阅读别人代码的时候,遇到不懂的语句,如果是系统提供的方法或者类,我们的第一手最好的帮助文档就是 MSDN,这个是微软官方给的最全的文档, 虽然有的地方解释可能比较苦涩,毕竟是翻译的,但它是最全面的。所以,大家必须学会使用。方法就是,我们想看一个类或方法的时候,用鼠标点击一下,然后按 F1功能键就行了,只要你的电脑联网,直接就把在线文档打开了。

相关文章:

C#快速入门基础

本篇文章从最基础的C#编程开始学习,经过非常优秀的面向对象编程思想和方法的学习,为C#编程打下基础。 第 01 章 C#开发环境之VS使用和.NET平台基础 1.1 Visual Studio 开发环境 1.1.1 硬件环境 i5CPUi5CPU(建议 4核 4线程或以上 &#xff0…...

UnityShader常用算法笔记(颜色叠加混合、RGB-HSV-HSL的转换、重映射、UV序列帧动画采样等,持续更新中)

一.颜色叠加混合 1.Blend混合 // 正常,透明度混合 Normal Blend SrcAlpha OneMinusSrcAlpha //柔和叠加 Soft Additive Blend OneMinusDstColor One //正片叠底 相乘 Multiply Blend DstColor Zero //两倍叠加 相加 2x Multiply Blend DstColor SrcColor //变暗…...

Vue3调用钉钉api,内嵌H5微应用单点登录对接

钉钉内嵌H5微应用单点登录对接 https://open.dingtalk.com/document/isvapp/obtain-the-userid-of-a-user-by-using-the-log-free 前端需要的代码 1、安装 dingtalk-jsapi npm install dingtalk-jsapi2、在所需页面引入 import * as dd from dingtalk-jsapi; // 引入钉钉a…...

UE5 局域网联机,寻找会话失败。

目录 参考资料: 尝试解决办法 1.1在【项目名.Build.cs】脚本中添加该行,添加后关闭编辑器,重新生成解决方案。​编辑 2.检查是否在同一个C类子网 参考资料: 1.Cant find session in LAN - Programming & Scripting / Mul…...

Windows系统安装MongoDB并结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…...

Hadoop伪分布式配置--没有DataNode或NameNode

一、原因分析 重复格式化NameNode 二、解决方法 1、输入格式化NameNode命令,找到data和name存放位置 ./bin/hdfs namenode -format 2、删除data或name(没有哪个删哪个) sudo rm -rf data 3、重新格式化NameNode 4、重新启动即可。...

柚见第十期(后端队伍接口详细设计)

创建队伍 用户可以 创建 一个队伍,设置队伍的人数、队伍名称(标题)、描述、超时时间 P0 队长、剩余的人数 聊天? 公开 或 private 或加密 信息流中不展示已过期的队伍 请求参数是否为空?是否登录,未登录不…...

【李沐论文精读】GPT、GPT-2和GPT-3论文精读

论文: GPT:Improving Language Understanding by Generative Pre-Training GTP-2:Language Models are Unsupervised Multitask Learners GPT-3:Language Models are Few-Shot Learners 参考:GPT、GPT-2、GPT-3论文精读…...

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…...

github(不是git啊)操作记录(踩坑)

专栏介绍与文章目录-CSDN博客 github是程序员绕不开的东西。 网站打不开? 向雇主或有关部门申请合法信道连接互联网。 明明账号密码都对却登录失败? 向雇主或有关部门申请合法信道连接互联网。 重置密码失败? 向雇主或有关部门申请合法信道…...

【SpringCloud微服务实战01】Eureka 注册中心

前言 在 Eureka 架构中,微服务角色有两类: EurekaServer :服务端,注册中心 记录服务信息 心跳监控 EurekaClient :客户端 Provider :服务提供者,例如案例中的 user-service …...

Python之函数进阶-柯里化

Python之函数进阶-柯里化 柯里化是一种将多参数函数转化为单参数高阶函数的技术。 具体来说,柯里化过程会将一个接受多个参数的函数,转换成一系列接受一个参数的函数,这些函数在内部组合起来,最终完成原函数的运算。 柯里化是一…...

Spring Cloud项目整合Sentinel及简单使用

说明:Sentinel是阿里巴巴开发的微服务治理中间件,可用于微服之间请求的流量管控、权限控制、熔断降级等场景。本文介绍如何在Spring Cloud项目中整合Sentinel,以及Sentinel的简单使用。 环境 首先搭建一个简单的微服务环境,有以…...

【话题】人工智能迷惑行为大赏

随着ChatGPT热度的攀升,越来越多的公司也相继推出了自己的AI大模型,如文心一言、通义千问等。各大应用也开始内置AI玩法,如抖音的AI特效~在使用过程中往往会遇到一些问题,让你不得不怀疑,这真的是人工智能吗…...

Jsp在Javaweb中扮演什么角色?

1.什么是Jsp JSP(Java Server Pages,Java 服务器页面)是一种动态网页技术,它允许在 HTML 页面中嵌入 Java 代码,并由 Web 服务器在请求页面时动态生成 HTML 页面。JSP 通常用于创建动态 Web 内容,如交互式表…...

部署docker仓库harbor

1、下载包 1、包已上传有两个harbor.v2.6.0.tar与harbor.tar 2、harbor.tar解压后会生成harbor目录,将harbor.v2.6.0.tar移动到harbor目录下。 3、执行harbor目录下的install.sh 4、执行完后修改配置文件 2、修改配置文件 vim /root/harbor/make/ harbor.yml.tmpl …...

Linux CentOS系统安装Spug并结合内网穿透实现远程访问本地运维平台

目录 前言 1. Docker安装Spug 2 . 本地访问测试 3. Linux 安装cpolar 4. 配置Spug公网访问地址 5. 公网远程访问Spug管理界面 6. 固定Spug公网地址 结语 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Linux CentOS系统安装Spug并结合…...

阿里云第一次面试记录

java多态? 多态表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例 Fu f Zi z(); 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作 特点: 对象类型和引用类型…...

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…...

mysql笔记:12. 数据备份与还原

文章目录 一、数据备份1. 备份单个数据库2. 备份多个数据库3. 备份所有数据库 二、数据还原1. mysql命令2. source命令 在操作数据库时&#xff0c;难免会发生一些意外情况造成数据丢失。为了确保数据的安全&#xff0c;需要对数据库中的数据进行备份&#xff0c;这样当遇到数据…...

react native使用TS实现路由

一、入口文件app.jsx的配置 入口文件最好还是要保留jsx import { NavigationContainer } from react-navigation/native; import { navigationRef } from "./src/views/RootNavigation";const App () > {return&#xff08;<NavigationContainer ref{navigat…...

手机充值的功能测试框架 - 测试要点

手机充值有微信营销活动的、有 APP 页面应用等&#xff0c;以下是我以前公司的手机充值话费或流量应用的测试要点&#xff0c;分享给大家参考下。 一、手机号码输入框检查 1、手机号码框要控制成只能输入11位数字的文本框。 2、输入以非1开头的手机号&#xff0c;给出提示&a…...

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘&#xff0c;建议容量至少为8GB&#xff0c;以便存放系统镜像文件 一台已经安装好操作系统的计算机&#xff0c;用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…...

Nodejs 第五十四章(net)

net模块是Node.js的核心模块之一&#xff0c;它提供了用于创建基于网络的应用程序的API。net模块主要用于创建TCP服务器和TCP客户端&#xff0c;以及处理网络通信。 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;用于…...

渗透测试修复笔记 - 04 nacos 可能会导致未经授权的用户获取到系统中的敏感信息的漏洞

问题&#xff1a;该漏洞可能会导致未经授权的用户获取到系统中的敏感信息。 http://ip地址:8848/nacos/v1/auth/users?pageNo1&pageSize9 最直接的解决办法就是升级nacos版本 如果不升级的话还是沿用旧版本就修改相关配置 当前版本为2.0.4 1.nacos的docker-compose文件…...

初级代码游戏的专栏介绍与文章目录

我的github&#xff1a; codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…...

【Redis系列】深入了解 Redis:一种高性能的内存数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…...

基于java的公寓报修管理系统设计与实现(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

Lua 函数前的冒号和点号,你知道他们的区别吗?

1. 函数前的冒号和点号 点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要在于是否自动处理self参数。 在Lua中&#xff0c;函数定义时前面有点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要体现在函数如何处理其第一个参数…...