【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>…

Java实现根据姓名生成头像(钉钉样式)

头像生成器代码如下&#xff1a; package com.hua.util;import org.apache.commons.lang3.StringUtils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.i…

配置listener tcps加密 enable SSL encryption for Oracle SQL*Net

一 配置客户端和服务端的wallet 2端配置方法一致&#xff0c;相互添加证书 orapki wallet create -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -auto_login_local orapki wallet add -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -dn “CNho…

Zabbix监控MySQL数据库实战

zabbix监控mysql的方式 只是安装agent 启用模板监控 启用自定义脚本的模板监控 使用zabbix模版及结合shell脚本监控mysql 创建mysql的zabbix授权用户 mysql> grant all PRIVILEGES on *.* to zabbixlocalhost identified by zabbix; ###创建一个有权限的访问用户lqb密码设…

es1.7.2 按照_type先聚合,再按照时间二次聚合

// 设置查询条件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…

[Android] 通过JNI 让 JAVA 调用 android native 接口

前言&#xff1a; JNI (java native interface) 是一个库&#xff0c;可以让 java 代码和其他语言互动&#xff0c;比如 java 通过 JNI 调用融合了 jni库的 c/c 代码&#xff0c;注意&#xff0c;这里要求 c/c代码中必须通过链接 jni 库并按照 JNI 规范定义一套可供 JAVA 调用…

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…

【02】基础知识:typescript数据类型

1、布尔类型 boolean let flag: boolean false2、数字类型 number let num: number 6 //十进制 let num2: number 0xf00d //十六进制 let num3: number 0b1010 //二进制 let num4: number 0o744 //八进制3、字符串类型 string 用双引号&#xff08;“&#xff09;或单引…

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;项目显…

springBoot中service层查询使用多线程CompletableFuture(有返回值)

重点&#xff1a; 1. 创建线程池 Executor executor Executors.newCachedThreadPool();//保存线程List<CompletableFuture<Void>> futures new ArrayList<>();2.使用 //这里可以是多个看下面代码是在for中使用的 CompletableFuture<Void> future …

深入解析路由与网络:网络的脉络

目录 路由 广域网 公网 外网 局域网 内网 以太网 Wi-Fi CDN IPv4和IPv6 IP地址分类 无类别域间路由&#xff08;CIDR&#xff09; 路由 路由是指在计算机网络中&#xff0c;将数据包从源地址传递到目标地址的过程。在一个复杂的网络中&#xff0c;数据包需要经过多…

冶金作业VR虚拟仿真厂家

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

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一种强大的工具&#xff0c;它可以处理和转换数据&#xff0c;然后将其呈现在视图中。它们可以被用于排序、格式化和过滤数据等任务。在本文中&#xff0c;我们将介绍Angular中的管道以及如何使用它们来简化开发过程。 管道的基…

Ansible Service模块,使用 Ansible Service模块进行服务管理

Ansible 是一种自动化工具&#xff0c;它可以简化配置管理、应用程序部署和任务自动化等操作。Ansible 的 Service 模块是其中一个重要的模块&#xff0c;它提供了管理服务的功能&#xff0c;使得在远程主机上启动、停止、重启和重新加载服务变得简单和可靠。本文将介绍 Ansibl…