【C# Programming】C#第一课(自己学习的笔记)

目录

一、C# 介绍

1.1 托管代码(Manage Code ) :

1.2 基础类型库 (Base Class Library):

1.3 程序集(Assembly):

1.4 .NET 框架:

1.5 公共中间语言(Common Intermediate Language),简称 IL。

1.6 C#编译器将源代码编译成CIL,从而生成程序集。

1.7 公共语言运行时 (Common Language Runtime ),简称 CLR。

1.8 所有依赖.NET框架的应用程序都需要CLR,CLR 实现如下功能:

1.9 .NET框架:

1.10 .NET FRAMEWORK 4.8:  

二、Hello World

三、基本类型

3.1 整数类型

3.1.1 整数数据

3.1.2 在指定数据类型时使用C#关键字而不是BCL名称。 

3.2 浮点类型

3.2.1 浮点类型 

3.2.2 与浮点数不同,decimal类型保证范围内的所有十进制数都是精确的。例如,0.1M 就是精确值,而不是一个近似值。

3.3 字面量

3.3.1 字面量(Literal value) :源代码中的常量值

 3.3.2 默认情况下,输入带小数点的字面量,编译器会自动把它解释为double 类型,整数值通常默认为int,如果值太大,编译器将把它解释为long,例如:

3.3.3 整数字面量解析

3.4 布尔及字符类型

3.4.1 布尔类型

3.4.2 字符类型

3.4.3 字符类型的字面两是用单引号括起来的,如:’A’

3.4.4 可以使用4位十六进制的Unicode值 、带有强制类型转换的整数值、或十六进制表示他们

3.4.5 字符类型:转义字符

 3.4.6 字符串类型

3.5 字符串字面量

3.5.1 字符串字面量必须放在双引号(“)中, 可以包含Unicode 和转义字符。

3.5.2 在C#中,可以在字符串前使用@符号,指明转义序列不被处理,结果是一个逐字字符串字面量,它不仅能将反斜杠当作普通字符处理, 也能逐字解释所有空白字符。 例如:

3.6 字符串插值

3.6.1 字符串插值使得字符串可以支持嵌入表达式。字符串插值语法在一个字符串字面量前面加上一个$符号前缀,然后将表达式嵌入大括号中, 例如:

3.6.2 字符串字面量也可以在”@”符号前面加上”$”符号的字符串插值而成,例如:

3.6.3 string 类常用静态方法

3.6.4 字符串的不可变性

四、其它介绍

4.1 using 和 using static 指令

4.1.1 using 指令有以下种用途

4.1.2 using static 指令访问类型的静态成员以及嵌套类型而不需要指定类型名。

4.2 隐式类型的局部变量

4.3 值类型和引用类型

4.3.1 C# 中数据类型分为两类 

4.3.2 值类型

4.3.3 引用类型

4.4 null

4.5 显式数据类型转换

4.6 不使用转型操作符的转换


一、C# 介绍

1.1 托管代码(Manage Code ) :

        依赖于.NET 框架,在CLR(Common Language Runtime ) 管理下运行的代码

1.2 基础类型库 (Base Class Library):

        BCL 是公共语言基础标准库Common Language Infrastructure (CLI)之一,它提供了内建的数据类型表示、基本文件访问,自定义属性,格式化、安全属性、 I/O 流、字符串操纵等功能, 例如:System.Int32 , System.String

1.3 程序集(Assembly):

        NET库和可执行文件称为程序集,程序集是编译好的,面向.NETFRAME的代码的逻辑单元。

        程序集中包含的元数据描述了对应代码中定义的类型和方法。程序集也包含描述自身的程序集元数据,这种元数据包含在一个称为“清单”(manifest) 的区域中。

1.4 .NET 框架:

        .NET 所有程序集的集合。

1.5 公共中间语言(Common Intermediate Language),简称 IL。

1.6 C#编译器将源代码编译成CIL,从而生成程序集。

1.7 公共语言运行时 (Common Language Runtime ),简称 CLR。

1.8 所有依赖.NET框架的应用程序都需要CLR,CLR 实现如下功能:

  • CLR 在程序运行时将IL 编译成本地代码。 这个过程称为即时编译( JIT)
  • 带有类型加载器的类型系统,类型加载器负责从程序集中加载类型,类型系统负责验证是否允许使用某些类型
  • 垃圾回收器
  • 线程处理

1.9 .NET框架:

1.10 .NET FRAMEWORK 4.8:  

  • 在目录 %windows%\Microsoft.NET\Framework\v4.0.30319下可以找到框架的库及CLR。
  • 可用于.NET Framework的类组织在System名字空间中。 

二、Hello World

using System;
class Program
{static void Main(){Console.WriteLine("Hello World!");}
}

ILDASM

        对程序集执行反汇编,显示C# 编译器生成的CIL代码。

三、基本类型

3.1 整数类型

3.1.1 整数数据

3.1.2 在指定数据类型时使用C#关键字而不是BCL名称。 

3.2 浮点类型

3.2.1 浮点类型 

3.2.2 与浮点数不同,decimal类型保证范围内的所有十进制数都是精确的。例如,0.1M 就是精确值,而不是一个近似值。

3.3 字面量

3.3.1 字面量(Literal value) :源代码中的常量值
 3.3.2 默认情况下,输入带小数点的字面量,编译器会自动把它解释为double 类型,整数值通常默认为int,如果值太大,编译器将把它解释为long,例如:
  • Console.WriteLine(1.618033988749895);     // 1.61803398874989
  • Console.WriteLine(1.618033988749895M);   // 1.618033988749895M
3.3.3 整数字面量解析
  • 没有后缀的字面量按照 int, uint, long, ulong 的顺序,解析成能够存储该值的类型
  • 具有后缀U的数值按照 uint, ulong 的顺序,解析成能够存储该值的类型
  • 具有后缀L的数值按照  long, ulong 的顺序,解析成能够存储该值的类型
  • 如果字面量的后缀是UL 或者LU,则解析成ulong 类型

3.4 布尔及字符类型

3.4.1 布尔类型

3.4.2 字符类型

3.4.3 字符类型的字面两是用单引号括起来的,如:’A’
3.4.4 可以使用4位十六进制的Unicode值 、带有强制类型转换的整数值、或十六进制表示他们

如: ‘\u0041’     (char)65        ‘\x0041’ 

3.4.5 字符类型:转义字符

        转义字符也能表示一个字符类型的字面量

 3.4.6 字符串类型

using System;
Class Program
{static void Main(){string s1 = "A string";Console.WriteLine("s1 is" + s1); }
}

3.5 字符串字面量

3.5.1 字符串字面量必须放在双引号(“)中, 可以包含Unicode 和转义字符。

        例如:string filename = “C:\\Prosharp\\Helloworld.cs”;

3.5.2 在C#中,可以在字符串前使用@符号,指明转义序列不被处理,结果是一个逐字字符串字面量,它不仅能将反斜杠当作普通字符处理, 也能逐字解释所有空白字符。 例如:

3.6 字符串插值

3.6.1 字符串插值使得字符串可以支持嵌入表达式。字符串插值语法在一个字符串字面量前面加上一个$符号前缀,然后将表达式嵌入大括号中, 例如:

        Console.WriteLine($"Your  full name is {firstName} {lastName}");

3.6.2 字符串字面量也可以在”@”符号前面加上”$”符号的字符串插值而成,例如:
using  System;
Class Program
{static void Main(){string  s1 = "Hello World!";Console.WriteLine($@"The string is: {s1}"); }
}
3.6.3 string 类常用静态方法

3.6.4 字符串的不可变性

        string 类型的关键特性在于它的不可变性(immutable).可以为string 变量赋一个全新的值,但出于性能考虑,没有提供修改字符串内容的机制,例如: 

四、其它介绍

4.1 using 和 using static 指令

4.1.1 using 指令有以下种用途
  • 允许使用命名空间的类型而不需要指定命名空间的名字,例如:using System.text;  
  • 允许创建一个类型或命名空间的别名,例如:using Project = PC.MyCompany.Project;
4.1.2 using static 指令访问类型的静态成员以及嵌套类型而不需要指定类型名。

        例如:using static System.Math;

4.2 隐式类型的局部变量

        var 用来声明隐式类型的局部变量。编译器根据声明时初始化语句推断数据类型

4.3 值类型和引用类型

4.3.1 C# 中数据类型分为两类 
  • 值类型
  • 引用类型
4.3.2 值类型
  • 值类型存储在栈(即堆栈stack)中
  • 除string 外,基本数据类型都是值类型
4.3.3 引用类型
  • 引用类型存储在托管堆中
  • 引用只复制对数据的引用,所以两个不同变量可引用相同的结构,
    • 例如string s1= “hello world”;        
    • string s2 = s1;  
  • 大多数复杂的c#类,包括用户自定义类型,都是引用类型
  • 如果希望用户自定义类型为值类型,需要声明成结构
  • 一般引用类型需要使用new 操作符从堆上分配对象

4.4 null

  • null值由关键字null标识,表明变量不引用任何有效对象,null值只能赋给引用类型,指针类型,可空值类型。 例如:string faxNumber = null;  
  • 一般不能把 null赋给 值类型,因为值类型不能包含引用。但是从C# 2.0开始,允许使用可空修饰符?声明可存储null 的变量, 例如:
    • int ?count = null;        
    •  // ………….        
    • if (count == null)          
    • // …………….

4.5 显式数据类型转换

  • C# 中,可以使用转型操作符执行转型,通过在圆括号中指定希望变量转换成的类型。转换可能丢失精度和数据,例如:
    • long longNumber = 50918309109; 
    • int   intNumber = (int)longNumber;
  • C# 提供了特殊关键字checked/unchecked 标识代码块, 如果代码块中发生数据溢出,checked 将使得程序抛出异常,如:

  • 不存在从数值类型到bool的有效转换

4.6 不使用转型操作符的转换

        每个数据类型都包含一个Parse() 方法,它允许将字符串转换成对应的数值类型,例如:

 string text = "9.11E-31";float kgElectronmass = float.Parse(text); 

        System.Convert 也能将一种类型转换为另一种类型,但是它只支持小的数据类型,而且是不可扩展的。它允许从 char, sbyte, short, int, long, ushort, uint, ulong, float, double, decimal, DateTime 和string 类型中的一种转换到另一种类型

string middleText = "261.626";
double middle = System.Convert.ToDouble(middleText);
bool isMiddle = System.Convert.ToBoolean(middle); 

        所有类型都支持ToString 方法 输出一个类型的字符串表示,例如:

bool isMiddle = true;
string text = isMiddle.ToString(); // text = True;

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

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

相关文章

实战:工作中对并发问题的处理 | 京东物流技术团队

1. 问题背景 问题发生在快递分拣的流程中,我尽可能将业务背景简化,让大家只关注并发问题本身。 分拣业务针对每个快递包裹都会生成一个任务,我们称它为 task。task 中有两个字段需要关注,一个是分拣中发生的异常(exp…

DIP: Spectral Bias of DIP 频谱偏置解释DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目录 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 动机1.2 相关概念1.3 方法原理频带一致度量与网络退化谱偏移和网络结构的关系Lipschitz-controlle…

Linux常规操作命令

日升时奋斗,日落时自省 目录 1、vim 1.1、工作模式 1.2、末行模式操作相关命令 1.2.1、保存退出操作 1.2.2、查找替换 1.3、输入模式操作相关命令 1.3.1、移动相关命令 1.3.2、删除和剪切命令 1.3.3、复制操作 1.3.4、撤销 2、head 3、tail 4、ps 5、…

数据结构算法--2 冒泡排序,选择排序,插入排序

基础排序算法 冒泡排序 思想就是将相邻元素两两比较,当一个元素大于右侧相邻元素时,交换他们的位置,小于右侧元素时,位置不变,最终序列中的最大元素,像气泡一样,到了最右侧。 这时冒泡排序第一…

linux Socket简单编程实例

服务端 网络编程中服务端接受连接的套接字创建过程如下: 1.调用socket函数创建套接字 2.调用bind函数分配IP地址和端口号 3.调用listen函数转为可接收请求状态 4.调用accept函数受理连接请求 #include <stdio.h> #include <stdlib.h> #include <sys/types.h>…

STM32自带的DSP库的滤波初体验(一)

最近在弄STM32自带的DSP库里的滤波&#xff0c;记录一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //滤波系数的个数 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

MongoDB 简介

什么是MongoDB ? MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个…

mqttfx连上OneNET生成token时的一大坑,报用户名或密码错误

整个流程如下连接&#xff1a; MQTT.fx和MQTTX 链接ONENET物联网开发平台避坑细节干货。 其中在生成token时&#xff0c;搞了半天在连接后都会报用户名密码错误 最后发现是格式问题&#xff0c;输入所有字符后一定要双击看是否可以全选中&#xff0c;可以全选中说明字符的格式…

java spring cloud 企业工程管理系统源码+二次开发+定制化服务 em

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显…

冶金作业VR虚拟仿真厂家

对于高风险行业来说&#xff0c;开展安全教育培训是企业的重点工作&#xff0c;传统培训逐渐跟不上时代变化和工人需求&#xff0c;冶金安全VR模拟仿真培训系统作为一种新型的教育和培训工具&#xff0c;借助VR虚拟现实技术为冶金行业的工人提供一个安全、高效的培训环境。 冶金…

大疆秋招指南,网申测评和面试攻略

大疆秋招内容简介 这是一个非常卷的时代&#xff0c;一到毕业季&#xff0c;各种各样规模不一的公司&#xff0c;纷纷向社会招聘&#xff0c;竞争实力强&#xff0c;知名度越高的企业&#xff0c;往往越能得到能力出众的人才的青睐&#xff0c;也正是在一批批新血液的注入下&a…

户外组网摆脱布线困扰,工业5G网关实现无人值守、远程实时监控

在物联网通信技术发达的2023&#xff0c;网络覆盖对所及之处的全面覆盖&#xff0c;科技发展的促使下很多高危户外场景也在思考如何利用无线技术提高人员安全及现场无人化管理。 煤矿是我们国家不可缺少的重要能源&#xff0c;其开采过程的危险系数也是众所皆知的&#xff0c;…

为什么爬虫要用高匿代理IP?高匿代理IP有什么优点

只要搜代理IP&#xff0c;度娘就能给我们跳出很多品牌的推广&#xff0c;比如我们青果网路的。 正如你所看到的&#xff0c;我们厂商很多宣传用词都会用到高匿这2字。 这是为什么呢&#xff1f;高匿IP有那么重要吗&#xff1f; 这就需要我们从HTTP代理应用最多最广的&#xf…

云上社群学习系统部分接口设计详解

目录 一、项目简介 二、技术选型 三、数据库设计 四、接口设计及思考 回复帖子部分 4.1 回复帖子 4.1.1.1 实现逻辑 4.1.1.2创建Service接⼝ 4.1.1.3 实现Service接⼝ 4.1.1.4 实现Controller 4.1.1.5 测试接口 4.1.1.6 实现前端页面 4.2 点赞帖子 4.2.1.1 参数要求…

Storm学习之使用官方Docker镜像快速搭建Storm运行环境

文章目录 0.前言搭建完的效果 1.教程1.1.docker 安装 zookeeper1.2. 安装 storm nimbus1.3.docker 安装 supervisor1.4.docker 安装 storm-ui1.5.查看已经启动的容器1.6.提交topology到 storm集群 2.总结3.参考文档 0.前言 Apache Storm 官方也出了Docker 镜像 https://hub.do…

nodejs+vue+elementui美食网站的设计与实现演示录像2023_0fh04

本次的毕业设计主要就是设计并开发一个美食网站软件。运用当前Google提供的nodejs 框架来实现对美食信息查询功能。当然使用的数据库是mysql。系统主要包括个人信息修改&#xff0c;对餐厅管理、用户管理、餐厅信息管理、菜系分类管理、美食信息管理、美食文化管理、系统管理、…

数据可视化工具的三大类报表制作流程分享

电脑&#xff08;pc&#xff09;、移动、大屏三大类型的BI数据可视化报表制作步骤基本相同&#xff0c;差别就在于尺寸调整和具体的报表布局。这对于采用点击、拖拉拽方式来制作报表的奥威BI数据可视化工具来说就显得特别简单。接下来&#xff0c;我们就一起看看不这三大类型的…

界面组件DevExpress Reporting——支持图表本地化和可绑定属性

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 在最近的更新(v23.1)中&#xff0c;官方扩展了…

centos7 部署kubernetes(带自动部署脚本)

目录 一、实验规划 1、规划表 2、安装前宿主机检查 1.配置主机名 2.制作ssh免密&#xff08;VM1中执行&#xff09; 3.修改hosts 文件 4. 修改内核相关参数 5.加载模块 6. 清空iptables、关闭防火墙、关闭交换空间、禁用selinux 7. 安装ipvs与时钟同步 8.配置docker的…

ChatGPT收录

VSCode插件-ChatGPT 多磨助手 多磨助手 (domore.run) Steamship Steamship 免费合集 免费chatGPT - Ant Design Pro 免费AI聊天室 (xyys.one)