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#常用的关键字如下所示。

intpublicthisfinallybooleanabstract
continuefloatlongshortthrowreturn
breakforforeachstaticnewinterface
voidtryswitchelsecatchprivate
ifgotodefaultbytedo

case

doubleprotectedwhilecharclassusing
(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

DDecimal1234
E指数1.05e+003
定点

1234.56

NNumber

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次操作,执行时间相差几十倍。这对程序性能的优化很重要。

        第一部分笔记到此为止,后续也会分享,详细内容还是推荐大家看视频学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LINUX操作系统】 动静态库的链接原理

初识linux&#xff08;16&#xff09; 动静态库&#xff08;手搓动静态库&#xff01;&#xff09;-CSDN博客 完成了对动静态库使用的学习&#xff0c;现在浅显理解下动态库加载的原理。 1. 宏观认知 磁盘中的应用程序main和动态库libmystdio.so先加载到内存中 加载到内存后&am…

广东启动“跨境电商+产业带”系列活动 三年打造30个产业振兴样板

大湾区经济网湾区财经快讯&#xff0c;近日&#xff0c;2025年广东省“跨境电商&#xff0b;产业带”助力“百千万工程”系列活动在中山市古镇镇启动。作为外贸领域新质生产力的重要载体&#xff0c;跨境电商将通过赋能县域特色产业带转型升级&#xff0c;为城乡融合与乡村振兴…

穿透递归的本质:从无限梦境到可控魔法的蜕变之路

穿透递归的本质&#xff1a;从无限梦境到可控魔法的蜕变之路&#xff08;C实现&#xff09; 一、递归&#xff1a;程序员的盗梦空间 在计算机科学的宇宙中&#xff0c;递归是最接近魔法本质的编程范式。它像一面镜子中的镜子&#xff0c;引导我们通过自我相似性破解复杂问题。…

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

WordPress靶场攻略

后台修改模板 修改404.php为一句话木马 访问404.php,验证有没有成功 http://47.122.51.245:8080/wp-content/themes/twentyfifteen/404.php?cmdphpinfo(); 上传主题 创建6.php,写入图中代码 自己随便下载一个主题包&#xff0c;将1.php和主题包压缩在一起&#xff0c;提交上…

JVM常用概念之对象对齐

问题 对象对齐有什么规范吗?对象对齐是8个字节吗? 基础知识 许多硬件实现要求对数据的访问是对齐的&#xff0c;即确保所有 N 字节宽度的访问都在 N 的整数倍的地址上完成。即使对于普通的数据访问没有特别要求&#xff0c;特殊操作&#xff08;特别是原子操作&#xff09…

K8S学习之基础三十七:prometheus监控node资源

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitor-sa# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…

leetcode127.单词接龙

本题的思路就是将所有可转换的序列相连&#xff0c;构成图&#xff0c;然后选择起始词作为广度优先遍历的起点&#xff0c;那么就能找到转换的最小步骤数 而这里的两个单词是否相连不是真的把他们弄成一张图&#xff0c;而是采用暴力枚举&#xff0c;逐个尝试替换字母&#xf…

Tr0ll2靶机详解

一、主机发现 arp-scan -l靶机ip&#xff1a;192.168.55.164 二、端口扫描、漏洞扫描、目录枚举、指纹识别 2.1端口扫描 nmap --min-rate 10000 -p- 192.168.55.164发现21端口的ftp服务开启 以UDP协议进行扫描 使用参数-sU进行UDP扫描 nmap -sU --min-rate 10000 -p- 19…

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示&#xff1a; 二.实施步骤&#xff1a; 1.DeepSeek官网创建API key&#xff1a; 创建成功后&#xff0c;会生成一个API key&#xff1a; 2. PyCharm工具&#xff0c;打开文件->设置->插件&#xff0c;搜索“Continue”&#xff0c;点击安装 3.安装完成后&…

如何在 Node.js 中使用 .env 文件管理环境变量 ?

Node.js 应用程序通常依赖于环境变量来管理敏感信息或配置设置。.env 文件已经成为一种流行的本地管理这些变量的方法&#xff0c;而无需在代码存储库中公开它们。本文将探讨 .env 文件为什么重要&#xff0c;以及如何在 Node.js 应用程序中有效的使用它。 为什么使用 .env 文…

《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现

前言 相信大家在slam学习中&#xff0c;一定会遇到slam系统的性能评估问题。虽然有EVO这样的开源评估工具&#xff0c;我们也需要自己了解系统生成的trajectory.txt的含义&#xff0c;方便我们更好的理解相机的运行跟踪过程。 项目配置如下&#xff1a; 数据解读&#xff1a; …

软考高级信息系统管理工程师通关100题(21-40)附记忆口诀

文章目录 21.常用存储模式的技术与应用对比22.物联网架构23.云计算服务提供的资源层次24.大数据25.区块链26.人工智能27.虚拟现实VR28.IT治理的内涵29.IT 治理活动30.IT治理本质31.IT审计目标32.IT审计方法33.治理系统设计34.数据管理能力成熟度评估模型35.项目管理原则36.管理…

Redisson 分布式锁原理

加锁原理 # 如果锁不存在 if (redis.call(exists, KEYS[1]) 0) then# hash结构,锁名称为key,线程唯一标识为itemKey&#xff0c;itemValue为一个计数器。支持相同客户端线程可重入,每次加锁计数器1.redis.call(hincrby, KEYS[1], ARGV[2], 1);# 设置过期时间redis.call(pexpi…

主流加固方案深度剖析(梆梆/腾讯/阿里)

1. 加固技术演进与核心原理 1.1 移动端加固技术图谱 graph TD A[代码防护] --> A1[混淆] A --> A2[虚拟化] A --> A3[动态加载] B[数据防护] --> B1[资源加密] B --> B2[协议加密] C[运行时防护] --> C1[反调试] C --> C2[环境检测] C --> C…

大模型之蒸馏模型

蒸馏模型&#xff08;Distilled Model&#xff09;是一种通过知识蒸馏&#xff08;Knowledge Distillation&#xff09;技术训练得到的轻量级模型&#xff0c;其核心思想是将一个复杂的大模型&#xff08;称为教师模型&#xff09;的知识“迁移”到一个更小、更高效的模型&…

iPaaS集成平台中的API可视化编排能给企业带来什么作用

随着企业数字化转型的加速&#xff0c;API&#xff08;应用程序接口&#xff09;作为企业数字化资产的核心组成部分&#xff0c;其数量和复杂性不断增加。为了满足业务敏捷化交付的要求&#xff0c;API可视化编排平台应运而生。谷云科技作为这一领域的领先者&#xff0c;其API可…

演员马晓琳正式加入创星演员出道计划,开启演艺事业新篇章

3月19日&#xff0c;演员马晓琳正式加入“创星演员出道计划”&#xff0c;不仅得到参演都市爱情喜剧《和我结婚吧》角色的机会&#xff0c;还获得文旅精品网剧《醉梦灵州》的出演机会&#xff0c;自此开启全新影视之路。对表演抱有极大热情的马晓琳&#xff0c;相信未来可以凭借…

绿盟科技春招面试

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…