第五课 C#语言基本元素概览,初始类型,变量与方法,算法简介

熟悉C#语言要求:对构成C#语言的基本元素,随便拿出一个你都认识,对于常见基本元素,都能正确使用它

精通C#语言要求:对于构成C#语言的基本元素,随便拿出一个都会使用,对于常用基本元素,你不但会使用,还不会出错时要在更深层次理解这些基本元素,了解背后运行的机制

文章目录

  • 构成C#语言的基本元素
    • 标记(Token)——六种基本元素
      • 关键字(Keyword)—词汇
      • 操作符(Opertator)—运算符
      • 标识符(Identifier)—标记
      • 标点符号
      • 文本(字面值)
      • 注释与空白
  • 简要介绍类型、变量与方法
      • 初始类型(Type)
      • 变量
      • 方法
  • 算法简介
      • 作业

构成C#语言的基本元素

标记(Token)——六种基本元素

关键字(Keyword)—词汇

构成一门编程语言的基本词汇,汉语常用词汇量七八万,英语常用词汇量也是七八万,C#是高级编程语言,它设计的初衷是用近似人类自然语言的语法,来表达编程逻辑,所以C#语言是人类自然语言一个非常非常小的子集,小到它的词汇量只要能够表达人类逻辑思维就行了,多余词汇就去掉不要了,C#语言有接近一百个词汇(关键字)

image-20240703042611397

注意:

1,有些关键字有多个用途

2,关键字是按逻辑分组的

image-20240703043533021

操作符(Opertator)—运算符

操作符也叫运算符,顾名思义是用来表达运算思想的符号,一共三四十个,分为以下几类:

Primary:基本操作符

x.y 点操作符

f(x) a[x] x++ x-- new typeof checked unchecked default(T) delegate sizeof ->

Unary:一元运算符,单目运算符,只能去操作一个操作数

+x -x !x ~x ++x —x (T)x &x *x

Multiplicative:乘法性操作符

x*y x/y x%y

Additive:加法性操作符

x+y x-y

shift: 位移(将内存中的一个数向左移向右移)

x<>y

Relational and type testing:关系操作符(比大小)和类型检验操作符(检验一个对象到底是不是一个类的实例)

xy x<=y x>=y is as

Equality:相等性操作符

x==y x != y

Logical AND: x&y

Logical XOR: x^y

Logical OR: x|y

Conditional AND : x && y

Conditional OR: x||y

Null-coalescing: x??y

Conditional: ?:

Assignment and lambda expression:

x=y x+=y x-=y x*=y x/=y x%=y x&=y x|=y

x^=y x<<=y x>>=y =>

标识符(Identifier)—标记

什么是标识符

俗话来说就是名字,取名起名字。给变量,类,类的成员(属性,方法,事件)起的名字都叫标识符,就像给人取名字有规范一样,给变量,类,类的成员起名字也有严格的规范

什么是合法的标识符?

1.首先一个标识符不能跟关键字冲突,关键字又叫保留字(这门编程语言已经把这个单词保留了,不能把这个单词当作标识符使用)

2.可以用字母(包括大写字母小写字母),数字和下划线,来组成标识符,但是不能拿数字开头,可以拿字母和下划线开头

符合这些规范的标识符是合法标识符

例外:如果想拿关键字当标识符,前面加上@符号

——怎样阅读C#语言定义文档(C#语言里的宪法)

image-20240703070307765

大小写规范

驼峰命名法:几个单词合一起,头一个单词首字母小写,后面的单词开头字母大写,这叫驼峰法,变量名都是用驼峰法

帕斯卡命名法:构成标识符的每个单词的首字母大写,其他字母都小写。名称空间名,类名,方法名都是用这个方法命名

命名规范

在给变量,类,类的成员命名的时候,要求变量名,类名,类的成员名要有意义,保证代码的可读性强。

对类命名的时候,类的名字一定要是一个名词

对类的成员命名的时候,属性一定要是一个名词

方法一定要是一个动词,或者动词短语,因为它表示一个类能够做什么

标点符号

; {}

文本(字面值)

(1)整数

int x=2; //普通整型:用32个比特位存储这个整数

long y=3L; //长整型:整数加上后缀L,变成长整型,用64个比特位存储3这个整数

它们是用二进制来表示的

(2)实数(小数)

float x= 3.0; //用32个比特位表示一个浮点数

double y=4.0D; //用64个比特位表示一个浮点数

(3)字符

char c=‘a’; //单引号里只能有一个字符,为一个字符类型的变量赋值

(4)字符串

string str=“ABCDE”; // 双引号

string str=“a”;

区别:字符和字符串,类型完全不同

(5)布尔

bool b=true;

bool b2=false;

左边的是变量,右边的是文本

(6)空(null)

关键字,操作符,标识符,标点符号,文本统称为标记(Token),标记就是对于编译器来说,有意义的记号,编译器能够识别出这些东西

注释与空白

单行注释 //

块注释

/* string str = null;
Form f = null;
f.ShowDialog();
*/

空白

Form f = new Form();
f.ShowDialog();

编译器会把注释和空白忽略掉,注释与空白对于编译器来说没有意义,所以不算在标记(Tonken)之内

简要介绍类型、变量与方法

初始类型(Type)

也称数据类型(Data Type)

  //var x = 3;   //Int32//Console.WriteLine(x.GetType().Name);//var x = 3L;   //Int64//Console.WriteLine(x.GetType().Name);//数据类型不一样,在内存中存储的形式不一样//var x = 3.0;   //Double//Console.WriteLine(x.GetType().Name);var x = 3.0F;   //Single:单精度浮点型Console.WriteLine(x.GetType().Name);//var自动获得变量的类型int x;x = 100;Console.WriteLine(x.GetType().Name);float x1;x1 = 3.0F;   //Single,后面要加f,大小写均可Console.WriteLine(x1.GetType().Name); Double x2;x2= 3.0;      //Double Console.WriteLine(x2.GetType().Name);

变量

变量是存放数据的地方,简称“数据”

声明变量格式

变量类型 变量名=初始值;

变量类型有14种

a.有符号的整型变量
能存储正负数和0 下面给出大概范围(赋值时超出范围会报错)

sbyte -128~127
int -21亿~21亿
short -32768~32767
long -9百万兆~9百万兆
示例代码

sbyte a = 1;Console.WriteLine("存储的数:"+a); //输出之间的连接用+

b.无符号的整型变量
能存储一定范围0和正数

byte 0~255
uint 0~42亿
ushort 0~65535
ulong 0~18百万兆
c.浮点数
float 存储7或8位有效数字,具体取决于编译器 四舍五入 从左到右非0数开始算有效数字
double 存储15~17位有效数字 C#中声明小数默认double类型
decimal 存储27~28位

float f = 0.1234f; //后面要加f 大小写均可double d = 0.12456434;decimal de = 0.124543534234t254m; //后面要加m 大小写均可

d.特殊类型
bool 变量值为true或false 表示真假数据类型
char 存储单个字符 单引号括住要赋的值
string 存储字符串 双引号括住要赋的值

string s1="hello", s2="world", s3="good"; //数据类型相同的多个变量可以同时声明

方法

旧称函数,成员函数,是处理数据的逻辑,又称为“算法”。方法可以理解为数据的加工厂,你把原料送进去,加工厂加工后把原料返还给你,这就是方法,方法就是数据的加工厂

方法的声明

方法的调用

三类常见的方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace MyExample3
{class Program{static void Main(string[] args){//方法的声明//方法的调用Caculator c = new Caculator();//int x= c.Add(2, 3);// Console.WriteLine(x);//string str = c.Today();//Console.WriteLine(str);c.PrintSum(4, 6);}}class   Caculator{//有数据输入,有数据输出public int Add(int a, int b){     //定义方法,为了能够在类的外面能够访问方法,要加上publicint result = a + b;return result;  //把结果拿到后返回给调用方法的人}//2.没有数据输入,有数据输出public string Today(){int day = DateTime.Now.Day;return day.ToString();}//3.有数据输入,没有数据输出,返回类型要用voidpublic void PrintSum(int a,int b){int result = a + b;Console.WriteLine(result);}}
}

程序=数据+算法

有了变量和方法就可以写有意义的程序了

算法简介

循环

递归

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace MyExample2
{class Program{static void Main(string[] args){Caculator c = new Caculator();int result = c.SumForm1ToX(3);Console.WriteLine(result);}}class Caculator{// 循环思想:占用内存比较少//public int SumForm1ToX(int x)// {//     int result = 0;//     for (int i =1; i < x+1; i++)//     {//          result = result + i;//     }//     return result;// }//递归思想;占用内存比较多//public int SumForm1ToX(int x)//{//    if (x==1)//    {//        return 1;//    }//    else//    {//        int result = x + SumForm1ToX(x - 1);//        return result;//    }//}public int SumForm1ToX(int x){//数学算式return (1 + x) * x / 2;}}
}

作业

image-20240704182448725

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

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

相关文章

LLM学习:大模型基础——视觉大模型以及autodl使用

1、常见的VLM 在大模型中,VLM 是视觉语言模型(Vision-Language Model)的缩写,是一种多模态、生成式 AI 模型,能够理解和处理视频、图像和文本。 VLM 通过将大语言模型(LLM)与视觉编码器相结合构建而成,使 LLM 具有 “看” 的能力,从而可以处理并提供对提示中的…

Vue—路由配置中设置了meta.title,但页面标题仍然显示为“Vite App“?【让我来看看~】

路由配置中明明设置了meta.title&#xff0c;但是页面标题仍然显示为"Vite App"&#xff1f;这是因为仅仅在路由配置中设置meta.title是不够的&#xff0c;还需要在路由守卫中动态设置页面标题。需要做以下几件事来正确设置页面标题&#xff1a;1.首先更新HTML文件的…

【机器学习】综合实训(二)

项目五 电影评分预测【教学内容】使用 MovieLens 数据集&#xff0c;训练一个模型预测用户对电影的评分。主要有以下几个知识点&#xff1a;&#xff08;1&#xff09;数据加载与探索性分析&#xff08;EDA&#xff09;。&#xff08;2&#xff09;处理稀疏数据&#xff08;如用…

STM32 UART + DMA + 空闲中断使用中的帧错误(FE)问题及解决方案

STM32 UART + DMA + IDLE中断使用中的帧错误(FE)问题及解决方案 在我调试STM32H7串口空闲中断DMA接受时遇到了一个bug,这个现象发生在系统刚上电时,有个串口由于帧错误FE挂起了中断,之后在HAL_UART_IRQHandler这个全局中断处理函数结束后,所有的中断使能标志位都被清除了,经过…

TDengine 选择函数 BOTTOM() 用户手册

BOTTOM() 函数用户手册 函数定义 BOTTOM(expr, k)功能说明 BOTTOM() 函数统计表/超级表中某列的值最小 k 个非 NULL 值。如果多条数据取值一样&#xff0c;全部取用又会超出 k 条限制时&#xff0c;系统会从相同值中随机选取符合要求的数量返回。 返回值 数据类型: 同应用…

西门子 S7-200 SMART PLC 实现星三角降压启动控制:原理、案例与完整程序

在工业控制场景中&#xff0c;中型异步电机直接启动时会产生远超额定电流的冲击电流&#xff08;通常为额定电流的 5-7 倍&#xff09;&#xff0c;不仅会影响电网稳定性&#xff0c;还可能对机械设备造成损伤。星三角&#xff08;Y-Δ&#xff09;降压启动是解决这一问题的经典…

【Android】View 的基础知识

【Android】View 的基础知识 1. 什么是 View&#xff1f; View 是 Android 中所有UI组件的基础类。它表示屏幕上的一个矩形区域&#xff0c;负责绘制内容和处理用户交互事件。所有的 UI 组件&#xff08;如按钮、文本框等&#xff09;都是 View 的子类&#xff0c;而 ViewGroup…

西门子 S7-200 SMART PLC 实现电机点动与连续运行综合控制

在工业生产中&#xff0c;电机控制并非单一模式&#xff1a;调试设备时需要 “按动即转、松开即停” 的点动功能&#xff0c;正常生产时则需要 “一键启动、持续运行” 的连续控制。本文以西门子 S7-200 SMART PLC 为载体&#xff0c;详细讲解电机点动控制原理&#xff0c;并设…

如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘sphinx-rtd-theme’问题 摘要 在使用 PyCharm 开发 Python 项目时&#xff0c;pip install 报错是常见痛点。特别是在构建文档或引入第三方库时&#xff0c;开…

HakcMyVM-Literal

目录信息搜集漏洞利用权限提升信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.21.0/24 Nmap scan report for 192.168.21.5端口扫描 ┌──(kali㉿kali)-[~] └─$ nmap -sS -sV -O -p- 192.168.21.5 Starting Nmap 7.95 ( https://nmap.org ) a…

0904 类的继承

Part 1.梳理思维导图一.继承中的特殊成员函数1.构造函数父类的构造函数会被继承到子类中&#xff0c;在构造的顺序中&#xff0c;是先构造父类&#xff0c;再构造子类#include <iostream>using namespace std;class Father { public:string name; protected:int *age; pr…

PDF教程|如何把想要的网页保存下来?

前段时间有个小伙伴咨询了小白&#xff1a;领导想要某个网页的整个页面&#xff0c;有没有比较好的方法把它保存下来&#xff1f; 在他找到小白之前&#xff0c;这种事情他已经接到好几次了&#xff0c;每次都是怎么解决的呢&#xff1f;其实很简单&#xff0c;就是打开Word&a…

【bash】命令查看当前目录下文件个数

要用 ls 查看当前目录下的文件个数&#xff0c;可以结合 wc -l 来统计行数&#xff1a; ls -1 | wc -l说明&#xff1a; ls -1&#xff1a;以一行一个文件的方式列出。wc -l&#xff1a;统计行数&#xff0c;也就是文件/目录的数量。 ⚠️ 需要注意&#xff1a; 这个方法会把文…

「日拱一码」081 机器学习——梯度增强特征选择GBFS

目录 什么是梯度增强特征选择&#xff08;GBFS&#xff09; 为什么 GBM 适合做特征选择 GBFS 的一般步骤 代码示例 什么是梯度增强特征选择&#xff08;GBFS&#xff09; GBFS 并非一个像 Lasso 或随机森林那样有严格标准定义的独立算法&#xff0c;而是一种基于梯度提升机…

解构汇编, 万物起源

汇编的诞生汇编全景图核心主干: CPU架构主要分支: 语法和工具共同的地貌: 核心概念延伸: 跨平台 & 跨架构跨平台跨架构总结以 GAS vs. NASM 为例NASM 不支持跨架构 ≠ 无法在ARM架构上的系统安装汇编的诞生 机器语言的困境 早期的程序员直接使用机器语言进行编程机器语言由…

广州旅游网站系统 - 纯静态旅游展示平台

&#x1f31f; 广州旅游网站系统 - 纯静态旅游展示平台观世界才有世界观 - 一个集景区展示、旅游攻略、文化传播于一体的精美旅游网站&#x1f4cb; 项目概述 这是一个专注于广州旅游文化的纯静态网站系统&#xff0c;采用现代化的前端技术栈&#xff0c;为游客提供全方位的广州…

Qt UDP通信学习

Qt UDP通信学习 一、项目概述 本项目基于Qt框架实现了UDP通信功能&#xff0c;支持单播与广播消息收发&#xff0c;展示了UDP套接字的基本用法&#xff0c;适合初学者学习Qt网络模块的实际应用。 二、项目结构 55.pro&#xff1a;Qt工程文件&#xff0c;配置模块与源码文件main…

古德哈特定律(Goodhart‘s Law)

古德哈特定律&#xff08;Goodhart’s Law&#xff09;表述为“当一个指标变成了目标&#xff0c;它将不再是个好指标”。 该定律由英国经济学家查尔斯古德哈特&#xff08;Charles Goodhart&#xff09;在1975年提出&#xff0c;最初用于批判撒切尔夫人政府的货币主义政策&…

在 ASP.NET Core 8 Web API 中实现基于角色的授权 安全且可扩展 API 的最佳实践

掌握基于角色的授权&#xff1a;使用专家策略保护您的 ASP.NET Core 8 Web API。在 ASP.NET Core 8 Web API 中实现基于角色的授权&#xff1a;安全且可扩展 API 的最佳实践介绍授权是任何 Web 应用程序的关键组件。在开发 API 时&#xff0c;使用基于角色的授权保护端点可确保…

AutoHotkey识别图片

一、下载ImagePut插件 下载地址&#xff1a;GitHub - iseahound/ImagePut: A core library for images in AutoHotkey. Supports AutoHotkey v1 and v2. 二、将插件和要搜索的图片导入项目 #Include ./plugin/ImagePut.ahk ; 截取当前屏幕 pic : ImagePutBuffer(0) point : p…