C#从入门到精通(1)
目录
第一章 C#与VS介绍
第二章 第一个C#程序
(1)C#程序基本组成
1.命名空间
2.类
3.Main方法
4.注释
5.语句
6.标识符及关键字
(2)程序编写规范
1.代码编写规则
2.程序命名方法
3.元素命名规范
第三章 变量
(1)变量的声明及初始化
1.声明
2.初始化
3.变量作用域
(2)数据类型
1.值类型
2.引用类型(存储对值的引用)
3.值类型与引用类型的区别
4.数据类型转换
(3)常量
1.常量的分类
第四章 表达式
(1)运算符
(2)运算符优先级与结合性
第五章 字符
(1)字符串
(2)字符串操作
(3)可变字符串(StringBuilder)
本文主要介绍C#入门的基础知识,希望能帮助大家更好的学习C#。学习课程是——C#从入门到精通(第5版)_哔哩哔哩_bilibili
如有时间,推荐看视频学习。本文主要对其进行总结。需要有一定的语言基础。
第一章 C#与VS介绍
想了解可以看视频。这里不再过多赘述。(视频安装的VS版本较老,建议装新的)。
第二章 第一个C#程序
using System; //引用命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1 //命名空间
{internal class Program //类{static void Main(string[] args) //入口{Console.WriteLine("hello world"); //C#标准输出Console.ReadLine(); //C#标准输入}}
}
(1)C#程序基本组成
1.命名空间
C#中的一种代码组织形式,主要用来标识类的可见范围。例如consoleApp1。
定义:namespace 命名空间名称
引用:using 命名空间名称
2.类
一种数据结构,存储数据成员,方法成员和其他类等内容,便于调用。例如program。
定义:class 类名 { // 代码 };
使用:实例化一个类对象。
3.Main方法
C#程序的入口。要求:1.必须定义为static、2.首字母必须大写、3.返回值只能为void或int(必须有return)、4.命令行参数可选。
4.注释
对代码功能进行说明。
分类:行注释 用法:// 注释内容
块注释 用法:/* 注释内容 */
5.语句
实质上是实现各种功能的C#代码。
6.标识符及关键字
标识符:类似于一个名字,例如类名、变量名、方法名、数组名等。
命名要求:1.首字母为字母或下划线,其余部分为数字、字母和下划线。2.标识符不能与关键字冲突。3.区分大小写。
关键字:表示特定的意义。C#常用的关键字如下所示。
| int | public | this | finally | boolean | abstract |
| continue | float | long | short | throw | return |
| break | for | foreach | static | new | interface |
| void | try | switch | else | catch | private |
| if | goto | default | byte | do | case |
| double | protected | while | char | class | using |
(2)程序编写规范
1.代码编写规则
尽量使用接口编程,关键语句一定编写注释。
局部变量随用随声明,尽量少用goto语句。
如果参数多建议使用结构,避免对大段代码使用try...catch。
一个文件避免编写多个类,字符串多变时用StringBuilder。
if语句块中使用“{ }”,switch语句一定编写default。
2.程序命名方法
Pascal命名法:所有单词第一个字母大写,其他小写。如User。
Camel命名法(驼峰命名法):除了第一个单词,所有单词第一个字母大写。其他小写。如userName。
3.元素命名规范
项目名/命名空间名:项目名称。
接口:一切接口始于“I”。
类名:与功能或操作切合。
方法名:体现方法的操作。
成员变量:尽量加前缀“_”。
第三章 变量
(1)变量的声明及初始化
一个变量就是存储区中的一个存储单元。
1.声明
根据类型分配空间。 变量类型 变量名 = 数值;如 int i =100;
变量命名规则:首字母为字母或下划线+其余部分(数字、字母和下划线)、简单表明变量的作用。不能与关键字冲突、区分大小写、不能用汉字。
2.初始化
将数据存入内存空间。如 money = 100;
初始化的三种方法:1.单独初始化变量。2.声明时初始化。3.同时初始化多个变量。
3.变量作用域
成员变量:类中定义的变量。(作用域:类内)。常用:1.静态变量(加static) 2.实例变量
局部变量:一对“{}”中定义的变量。(作用域:{ }内)。
(2)数据类型
1.值类型
简单:数值型(如int 、float等)(使用时注意取值范围)。特殊的:decimal(精度达到28位)主要用于货币计算。
字符(char)
布尔(bool):主要用于表示true/false值。例如,bool x = true;
复合:结构体、枚举:enum 枚举名{值1,值2 ....}
2.引用类型(存储对值的引用)
类(object类(基类):所有类的基类。string类(不可改变性):简化字符串操作。
接口、数组、委托。
3.值类型与引用类型的区别
值类型传递是复制到各自的区域(存储在栈区),引用类型传递则指向同一块区域(存储在堆区)。
4.数据类型转换
隐式类型转换:自动进行类型转换。要求两种类型兼容,目标精度大于源类型。例如int转double。
显式类型转换:1.(类型名)表达式。例如 int a = (int) 10.2;高精度转低精度会截断。精度损失。不能溢出。
2.convert.to类型名(表达式)。溢出会提示错误。
3.类型名.parse(表达式)(只能用于数值类型)
装箱:值类型->引用类型 例如:object obj = 值;
拆箱:引用类型->值类型 例如:int j = (int)obj;类型一致
(3)常量
定义:不能被改变的量。
1.常量的分类
编译时常量(使用const定义)与运行时常量(使用readonly定义)。
区别:const需要初始化,readonly不需要初始化。
第四章 表达式
表达式:由运算符和操作数组成的。
(1)运算符
算数运算符:+、-、*、/(不能除以0)、%(求余结果符号与左操作数符号一致)。
赋值运算符:=
复合赋值运算符:将赋值运算符和其他运算符结合使用,从而实现两种运算法效果。
例如:+=、-=、/=、&=、>>=、%=等。自动完成类型转换。
关系运算符:==(相等)、>=(大于等于)、<=(小于等于)、!=(不等)、>、<。
逻辑运算符:&&或&(与)、||或|(或)、!(非)。&&与||是短路运算符,第一个条件满足就不会判断第二个条件。
位运算符:&(位与)、|(位或)、位取反(~)、位异或(^)。<<(左移)、>>(右移)
条件运算符:判断表达式?结果1:结果2;true——结果1,false——结果2。
逗号运算符:<表达式1>,<表达式2>,...,起连接作用
is运算符:对象 is 类型。对象是不是该类型。是返回true,不是false。
(2)运算符优先级与结合性

第五章 字符
字符:C#语言中,使用char/Char类定义字符,并且只能用单引号括起来单个字符。
转义字符:以‘\’开头,后跟一个或多个字符。具有特定含义。
(1)字符串
声明:string 字符串名;
初始化:1.引用字符串常量。例如,string a = “你好”;
2.使用字符数组或其中一部分初始化。例如,string a = new string(char[] value), string a = new string(char[] value,int offset,int count);
空字符串和空引用的区别
string s1 = " "; 是个字符串,分配了空间,只是没有数据而已。
string s2 = null; 空对象,没有指向任何地址。
(2)字符串操作
1.连接字符串:使用“+”号运算符实现拼接功能。例如 string a = “123”+“456”;
2.比较字符串
1.compare方法。string.compare(str1,str2) 1大于,-1小于,0相等。
2.compareTo方法。s1.compareTo(s2);
3.euqals方法。相等返回true,不相等false。string.equals(s1,s2);
字符比较的顺序:空字符<数字<小写字母<大写字母<汉字。
3.格式化字符串
使用string提供的Format方法。例如,string s1 = string.Format("{0}*{1} = {2}",2,3,6);
| 格式说明符 | 名称 | 实例 |
| C | 货币 | ¥100 |
| D | Decimal | 1234 |
| E | 指数 | 1.05e+003 |
| F | 定点 | 1234.56 |
| N | Number | 1,234,567 |
| P | 百分比 | 100% |
| X | 十六进制 | 00ff |
标准日期时间格式

另一种格式化方法
使用tostring方法。 例如:int money = 100; money.tostring("C");
4.截取字符串
string类的Substring方法。
例如 str.Substring(int startIndex)或str.Substring(int startIndex,int length);
超出索引范围会报错。下标是从0开始。
5.分割字符串
string类的split方法。
例如str.Split(new char[] {‘,’});或str.Split(new char[] {‘,’},2);
6.插入字符串
string类的Insert方法。例如 str.Insert(int startIndex,string value);
7.删除字符串
string类的Remove方法。例如str.Remove(int startIndex)/str.Remove(int startIndex,int count);
8.复制字符串
string类提供的Copy方法。例如string.Copy(string str);(全部复制)
str.CopyTo(int start,char[] des,int start_des,int count);(部分复制)
9.替换字符串
string类的Replace方法。例如 str.Replace(char oldchar,char newchar);或str.Replace(string oldchar,string newchar)。
(3)可变字符串(StringBuilder)
常用方法
| 方法 | 说明 |
| Append | 将字符串追加到指定对象末尾 |
| AppendFormat | 自定义变量的格式并将这些值追加到对象末尾 |
| Insert | 将字符串或对象添加到当前对象的指定位置 |
| Remove | 从当前对象移除指定数量的字符 |
| Replace | 用另一个指定的字符替代对象中的字符 |
示例:
StringBuilder title = new StringBuilder("(),(),(),2、4、6、7、8");Console.WriteLine(title);title.Remove(0, 9);title.Insert(0, "(门前大桥下),(游过一群鸭),(快来快来数一数),");Console.WriteLine(title);
字符串和可变字符串区别
string操作会产生额外的副本,占用空间,效率低。
stringBuilder操作不会产生额外的副本,效率高。
示例
static void Main(string[] args) {string str = "";long startTime = DateTime.Now.Millisecond;for(int i = 0; i < 20000; i++){str +=i;}long endTime = DateTime.Now.Millisecond;long time = endTime - startTime;Console.WriteLine("string消耗的时间:"+time);StringBuilder sb = new StringBuilder("");long startTime2 = DateTime.Now.Millisecond;for (int i = 0; i < 20000; i++) {sb.Append(i);}long endTime2 = DateTime.Now.Millisecond;long time2 = endTime2 - startTime2;Console.WriteLine("StringBuilder消耗的时间:" + time2);}
运行结果
string消耗的时间:116
StringBuilder消耗的时间:2
从结果可以看出,对string和stringBuilder进行20000次操作,执行时间相差几十倍。这对程序性能的优化很重要。
第一部分笔记到此为止,后续也会分享,详细内容还是推荐大家看视频学习。
相关文章:
C#从入门到精通(1)
目录 第一章 C#与VS介绍 第二章 第一个C#程序 (1)C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 (2)程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…...
配置阿里云yum源
配置阿里云yum源 修改默认的yum仓库,把原有的移动到创建的目录里(踢出国外的yum源) # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...
头歌实训--Pandas合并数据集--第3关:案例:美国各州的统计数据
任务描述 本关为练习关卡,请按照编程要求完成任务,获取美国各州2010年的人口密度排名。 import pandas as pd import numpy as npdef task3():#********** Begin **********##读取三个csv文件pop pd.DataFrame(pd.read_csv("./step3/state-popula…...
仿“东方甄选”直播商城小程序运营平台
在公域直播流量红利趋于饱和、流量成本大幅攀升的当下,私域直播为企业开辟了新的流量聚集和转化渠道,特别是对于那些希望在私域流量领域取得突破的品牌商家来说,直播场景以其独特的高频互动氛围,相比其他运营方式,展现…...
CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决
一、环境准备与依赖安装 更新系统与开发工具 sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel \ readline-devel tk-devel libffi-devel gdbm-devel db4-de…...
ORACLE 19.8版本数据库环境EXPDP导数据的报错处理
近期用户在做EXPDP导出时,报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的,到底是什么原因导致了这个问题呢? 导出脚本报错: 分析导出日志,当时系统资源充足但是进程启动失败,…...
LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)
前面两节课程分别给大家介绍了“控制器连接、定时获取轴状态、轴坐标、控制器型号、轴参数设置、IO控制、Basic文件下载”(详情点击→LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(上)&#…...
Ubuntu Qt: no service found for - “org.qt-project.qt.mediaplayer“
1、前言 在一次项目过程中,因项目需求,需要将windows开发的Qt项目迁移到ubuntu系统中,且在某个功能项中需要播放音频,在windows系统中能够正常运行,但在ubuntu系统中却显示defaultServiceProvider::requestService(): …...
C++ 各种map对比
文章目录 特点比较1. std::map2. std::unordered_map3. std::multimap4. std::unordered_multimap5. hash_map(SGI STL 扩展) C 示例代码代码解释 特点比较 1. std::map 底层实现:基于红黑树(一种自平衡的二叉搜索树)…...
纯内网环境安装1Panel面板与商店应用
文章目录 前序准备开始联网机器配置1Panel配置安装所有离线需要的应用导出Docker镜像导出1Panel配置 离线机器配置安装1Panel覆盖配置导入容器镜像重建应用 关于Jar包的运行 前序 之前一篇文章讲解了如何在内网环境下安装1Panel并操作商店应用安装应用程序,但是在一…...
软件工程面试题(三)
1.简单介绍下java?Spring的AOP,IOC的讲述 对struts2的了解,1,2的比较 xml的了解 J2ee的webserviced的协议? Spring AOP:代理机制 Spring提供的自动代理机制 Spring的IoC来实组件之间的依赖关系注入, 使控制层及…...
【 C++】构造函数和成员函数
详细探讨 C 中的构造函数和成员函数(方法),并通过代码示例进行说明。 1. 构造函数 (Constructors) 目的: 构造函数是一种特殊的成员函数,其主要目的是在创建对象时初始化对象的数据成员。名称: 构造函数的…...
OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 铅笔风格非写实线描图。 该函数通过图像处理技术将输入的彩色图像转换为两种风格的铅笔素描效果: dst1:炭笔效果的灰度图…...
Event driven agentic document workflows 笔记 - 1
1. 课程介绍 主题:与 LlamaIndex 合作构建的事件驱动代理文档工作流讲师:Laurie Voss(LlamaIndex 开发者关系副总裁) 2. 代理文档工作流简介 定义:基于代理的应用程序,用于自动化端到端文档处理工作流。…...
影响单模光纤耦合效率的分析
影响单模光纤耦合效率的因素 如果想使单模光纤的耦合效率最高,入射光束需要满足以下条件: (1)入射光束接近高斯光; (2)入射光束从光纤端面正入射; (3)入射…...
windows+ragflow+deepseek实战之一excel表查询
ragflows平台部署参考文章 Win10系统Docker+DeepSeek+ragflow搭建本地知识库 ragflow通过python实现参考这篇文章 ragflow通过python实现 文章目录 背景效果1、准备数据2、创建知识库3、上传数据并解析4、新建聊天助理5、测试会话背景 前面已经基于Win10系统Docker+DeepSeek+…...
从“不敢买大”到“按墙选屏”,海信电视如何凭百吋重构客厅?
电视买小了,成为茜茜新房入住后最大的遗憾。 新房装修的时候,茜茜担心电视买大了眼睛看着累,因此把尺寸选在了65吋。结果入住后,孩子看动画片嚷着“画面太小”,老公看球赛吐槽“看不清球员号码”,全家追剧…...
ABAP 长文本编辑器
加个屏幕 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------…...
【K8S】ImagePullBackOff状态问题排查。
ImagePullBackOff 是在使用 Kubernetes(K8s)时经常遇到的一种错误状态,下面为你详细介绍其含义、可能的原因及解决办法。 含义 当你在 K8s 集群中创建一个 Pod 时,Kubelet 会尝试从指定的镜像仓库拉取所需的容器镜像。如果拉取镜…...
Logstash 使用指南
Logstash 是一个开源的数据收集引擎,能够从多种数据源收集数据,进行转换和过滤,并将数据发送到指定的目的地(如 Elasticsearch、文件、数据库等)。它是 Elastic Stack(ELK Stack)的重要组成部分…...
Python 位运算符大全
在 Python 中,位运算符用于对整数进行位级别的操作。位运算符直接操作二进制位,适用于处理二进制数据、位掩码、权限控制等场景。Python 提供了多种位运算符,包括按位与、按位或、按位异或、按位取反、左移和右移等。 1. 常见的位运算符 运算符描述示例&按位与a & b…...
MATLAB 调用arduino uno
为了授课,必须重新把arduino用上。 采用MATLAB编码,可以简化相关程序授课部分 1 安装包 MATLAB Support Package for Arduino Hardware - File Exchange - MATLAB Central (mathworks.com) 需要这个插件。 当然也可下载simulink的模块,但…...
Git——分布式版本控制工具使用教程
本文主要介绍两种版本控制工具——SVN和Git的概念,接着会讲到Git的安装,Git常用的命令,以及怎么在Vscode中使用Git。帮助新手小白快速上手Git。如果想直接上手用Vscode操作远程仓库则直接看7和9即可! 目录 1. SVN和Git介绍 1.1 …...
HarmonyOS 开发中条件渲染的选择:if/else 与取反操作的对比与实践
在HarmonyOS开发里,if/else 条件渲染和取反操作(常借助三元运算符)都能根据不同情况设置组件属性值。下面从多个维度分析如何选择,以及各自的利弊,并附上代码示例。 选择方法 简单二元条件:当条件只有两种…...
【数据分析】数据筛选与访问行列元素3
访问元素 .loc属性可以通过传入index的值访问行数据。 .loc属性允许传入两个参数,分别是index的值和columns的值,参数间用“逗号”隔开,这样便可以访问数据中的元素。 1. 访问单个元素 访问单个元素比较简单,只需要通过它的in…...
前沿技术一览科技改变生活新趋势
虚拟现实技术最近在教育里变得特别火。它能让人感觉像是真的到了另一个地方。比如学生戴上VR眼镜,就能“走进”历史事件的发生地或者深入细胞内部去了解生命科学。 这种学习方法能让知识更生动。学生不再只是看书听讲,而是可以亲手体验。比如在学习地理…...
Python连接数据库进行增删改查
更多优质文章 _>_>_>_>_>✍✈✉戳我 目录 1.导入相关库 2.创建连接 3.插入数据 4.删除数据 5.修改数据 6.查询数据 7.更多干货 1.导入相关库 import pymysql -----pip install pymysql #下载库 2.创建连接 conn pymysql.connect(hostlocalho…...
爬虫——playwright获取亚马逊数据
目录 playwright简介使用playwright初窥亚马逊安装playwright打开亚马逊页面 搞数据搜索修改bug数据获取翻页优化结构 简单保存 playwright简介 playwright是微软新出的一个测试工具,与selenium类似,不过与selenium比起来还是有其自身的优势的ÿ…...
大数据学习(77)-Hive详解
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
回调方法传值汇总
<template v-slot"scope"><el-switch v-model"scope.row.open" change"(p1) > changeOpen(p1, scope.row)"></el-switch></template>公域流量 多选 selection-change“val > multipleSelection val”...
