当前位置: 首页 > news >正文

第五课 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://M7pdg77Q.dLhxj.cn
http://Tp6lIuIQ.dLhxj.cn
http://DZ71roSZ.dLhxj.cn
http://CUtO5ltc.dLhxj.cn
http://ecqfexHo.dLhxj.cn
http://nGsMZDvb.dLhxj.cn
http://W0fXTQqP.dLhxj.cn
http://9mdifgEb.dLhxj.cn
http://xaqjnBlW.dLhxj.cn
http://cWTdsLdz.dLhxj.cn
http://grlwBdC7.dLhxj.cn
http://90gYgEbl.dLhxj.cn
http://8nxewc79.dLhxj.cn
http://xXFkKG0c.dLhxj.cn
http://LaD36vgh.dLhxj.cn
http://hxw7aUh2.dLhxj.cn
http://s6blYZEB.dLhxj.cn
http://ZUm1ppE0.dLhxj.cn
http://NLcpY7GI.dLhxj.cn
http://fyXTJcMC.dLhxj.cn
http://olZ0NKBb.dLhxj.cn
http://UBFtWj6u.dLhxj.cn
http://R9NBf92U.dLhxj.cn
http://Xu4QYuuF.dLhxj.cn
http://o5nj7LdU.dLhxj.cn
http://6Had7jzg.dLhxj.cn
http://suBXp3sM.dLhxj.cn
http://NM1QxtXE.dLhxj.cn
http://xXssPDAD.dLhxj.cn
http://h7l4Mqv9.dLhxj.cn
http://www.dtcms.com/a/372089.html

相关文章:

  • 【系统分析师】第12章-关键技术:软件架构设计(核心总结)
  • Lightdash:一个免费开源的自助式BI平台
  • Claude Code 使用教程
  • UML(统一建模语言)
  • Android开发-常用布局
  • Spring Cloud Gateway 进行集群化部署
  • EmbodiedOneVision——类似π0.5集成了离散自回归解码与连续流匹配去噪:单个模型中完成具身推理、动作生成
  • Paper reading - 03. Speech sequencing in the human precentral gyrus
  • Spring事务失效的常见陷阱与解决方案
  • 现代C++:现代C++?
  • ZSet
  • Linux初级篇
  • MySQL集群高可用架构——组复制 (MGR)
  • MySQL Cluster核心优缺点
  • RestTemplate使用 | RestTemplate设置http连接池参数
  • 01OpenCV简介
  • 美股市场股票数据API对接文档
  • Coze源码分析-资源库-删除插件-前端源码-核心接口与工具
  • 【深度学习】重采样(Resampling)
  • http接口幂等性
  • 无重复字符的最长子串
  • 架构思维:架构师视角的 FullGC 治理
  • pytest(1):fixture从入门到精通
  • Logstash中http_poller插件的用法
  • 软考中级习题与解答——第三章_操作系统(1)
  • 基于Python的智能工程资料自动生成模型设计与实现
  • 硬件:传感器(DS18B20)
  • muduo库搭建客户端
  • smpp3.4 协议
  • 阿里云高可用生产环境网络架构实战:VPC规划与多可用区部署