系统学c#:2、基础语法(关键字、标识符、数据类型、变量、常量、字面量、运算符、类型转换)

news2025/2/6 19:39:16

关键字:

关键字是编程语言中具有特殊含义的单词或符号,它们通常被编程语言用于表示特定的语法结构、操作或约定。在C#中,关键字具有特定的语法和功能,用于定义语言的基本结构和规则。

以下是一些C#中常用的关键字及其功能:(一开始了解就好随着学习的深入慢慢会频繁的使用关键字,自然而然地就记住了)

  1. class:用于定义类。
  2. struct:用于定义结构。
  3. interface:用于定义接口。
  4. enum:用于定义枚举。
  5. namespace:用于定义命名空间。
  6. using:用于引入命名空间。
  7. publicprivateprotectedinternal:用于定义访问修饰符。
  8. static:用于定义静态成员。
  9. readonly:用于定义只读字段。
  10. const:用于定义常量。
  11. abstract:用于定义抽象类或抽象成员。
  12. virtualoverride:用于定义虚方法和重写方法。
  13. new:用于隐藏成员或指定新的实现。
  14. basethis:用于引用基类或当前实例。
  15. asis:用于类型转换和类型判断。
  16. typeofnameof:用于获取类型或成员的信息。
  17. ifelseswitchcase:用于条件控制。
  18. forforeachwhiledo:用于循环控制。
  19. trycatchfinally:用于异常处理。
  20. returnbreakcontinue:用于控制流程。

标识符:

标识符是用来为类、变量、函数或任何其他自定义内容命名。C# 中标识符的定义规则如下所示:

字面量在编程中常用于初始化变量、常量或数据结构的固定值,它们在代码中是静态不变的,不会在程序运行过程中改变。

  • 标识符必须以英文字母开头,后面可以跟英文字母、数字0-9或下划线_

  • 标识符中的第一个字符不能是数字;

  • 标识符中不能包含空格或特殊符号,例如? - + ! @ # % ^ & * ( ) [ ] { } . ; : " ' / \,但是可以使用下划线_

  • 标识符不能是 C# 关键字

  • 变量:

  • 变量是编程中用来存储和表示数据的一个名称,它可以是各种数据类型(如整数、浮点数、字符串等)的容器。变量可以是各种数据类型,包括整数类型(intlong等)、浮点数类型(floatdouble等)、字符类型(char)、布尔类型(bool)、字符串类型(string)等。
  • 声明语法:数据类型 变量名列表(可以一个或个多变量名,变量名之间用逗号隔开)
  • int age; // 声明一个整数类型的变量
    age = 25; // 初始化变量,赋值为25
    int age =25 //定义且声明
    
    double height = 175.5; // 声明并初始化一个双精度浮点数类型的变量
    

    Console类提供的ReadLine()方法可以接收用户输入,将其输入内容存储到变量中

  •  int a=0;
     Console.WriteLine("请输入变量a的值:");
     a =int.Parse( Console.ReadLine());//将字符串转化为int类型
     Console.WriteLine("变量a的值是:"+a);

    数据类型

  • 数值类型:
  • 引用类型:
  • 在C#中,引用类型是一种数据类型,它们存储的是对象的引用(内存地址),而不是对象本身的值。引用类型在堆内存中分配空间,而变量本身存储的是指向对象的引用。这与值类型(如整数、浮点数等)不同,值类型直接存储数据的值。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。
  • 对象类型(如 object):是一种引用类型,它可以表示任何其他类型的对象。在C#中,所有类都是 object 类的派生类,因此可以将任何类的实例赋值给 object 类型的变量。
  • object obj = "Hello, world!"; // 将字符串赋值给对象类型变量
    object obj2 = 42; // 将整数赋值给对象类型变量
    

    动态类型(如 dynamic):也是一种引用类型,但它在编译时不进行类型检查,而是在运行时根据实际情况推断类型。使用动态类型可以实现更灵活的编程,但也可能导致运行时类型错误。

  • 字符串类型:
  • dynamic dynamicVar = 10; // 动态类型变量,可以赋值为任意类型
    dynamicVar = "Hello, dynamic!"; // 现在是字符串类型
    

    字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 string 类来创建,string 类是 System.String 类的别名,它是从对象(Object)类型中派生的。

  • 常量

  • 与变量相对应的概念是常量,常量的值在程序运行期间不可改变,使用 const 关键字进行声明。

  • const double PI = 3.14159; // 声明一个常量PI,并初始化为3.14159
    

    字面量(数据在程序中的书写格式)

    编程中表示固定值的符号或文字,其值在代码中是固定不变的。

  • 表示整数值,可以是十进制、十六进制、八进制或二进制。

    • 十进制:int x = 123;
    • 十六进制:int y = 0xFF;
    • 八进制:int z = 0123;
    • 二进制:int w = 0b1010;
  • 浮点数字面量:表示浮点数值,可以是单精度浮点数(float)或双精度浮点数(double)。

    • 单精度浮点数:float f = 3.14f;(若不加f,默认数值为double)
    • 双精度浮点数:double d = 3.14;
  • 字符字面量:表示单个字符,使用单引号括起来。

    • char c = 'A';
  • 字符串字面量:表示字符串,使用双引号括起来。

    • string s = "Hello, world!";
  • 布尔字面量:表示布尔值,可以是true或false。

    • bool b1 = true;
    • bool b2 = false;
  • 空字面量:表示空引用或空值,使用关键字null

    • object obj = null;
  • 枚举字面量:表示枚举类型的固定值。

  • 十进制字面量:表示十进制数值,使用关键字decimal

    • decimal d = 123.45m;
  • 时间和日期字面量:表示时间和日期,使用关键字DateTime

    • DateTime dt = DateTime.Now
  • 空数组和空集合字面量:表示空数组或空集合。
    • 空数组:int[] arr = new int[0];
    • 空集合:List<int> list = new List<int>(); 
int decimalNumber = 123; // 十进制整数字面量
int hexadecimalNumber = 0xFF; // 十六进制整数字面量
int octalNumber = 0123; // 八进制整数字面量
int binaryNumber = 0b1010; // 二进制整数字面量
float floatNumber = 3.14f; // 单精度浮点数字面量
double doubleNumber = 3.14; // 双精度浮点数字面量
char character = 'A'; // 单个字符字面量
string message = "Hello, world!"; // 字符串字面量
bool trueValue = true; // 布尔字面量true
bool falseValue = false; // 布尔字面量false
object nullObject = null; // 空引用字面量
enum Color { Red, Green, Blue }; // 枚举类型定义
Color colorValue = Color.Red; // 枚举类型的字面量
decimal decimalValue = 123.45m; // 十进制浮点数字面量
DateTime currentDate = DateTime.Now; // 当前日期和时间的字面量
int[] emptyArray = new int[0]; // 空数组字面量
List<int> emptyList = new List<int>(); // 空集合字面量

运算符

1、算术运算符

算术运算符就是完成特定算术运算的符号

 int a = 30, b = 20;
 int c = a + b;  //求和  50
 int d = a - b;  //差   10
 int e = a * b; //积  600
 int f = a / b; //商 整除 1
 int g = a % b; //取模 整除后取余  10
 int a1 = a++; //自增  ++在后,先赋值,再自增,
 int b1 = --b;//--在前,先自减1,再赋值

2、关系运算符

关系运算符用来比较运算符左右两边的操作数

3、逻辑运算符

C#中支持的逻辑运算符有:&& || !

4、位运算符

位运算符用来对二进制位进行操作

int a = 40; //二进制 0010 1000
int b = 13; //二进制 0000 1101
int c = a & b; //0000 1000  --8
int d = a | b; //0010 1101  --45
int e = a ^ b; //0010 0101   --37
int f = ~a;    //1101 0111  --41
//位移
int g = a << 2; //1010 0000  --160  左移2位
int h = b >> 2; //0000 0011  --3    右移2位

5、赋值运算符

赋值运算符顾名思义就是用来为变量赋值的,最常用的就是 =

6、其它运算符

获取数据类型的大小 (字节数)
int intSize =sizeof(int); //4
int floatSize=sizeof(float); //4
int decimalSize=sizeof(decimal);//16
int enumSize = sizeof(RoleType);//4
int charSize=sizeof(char);//2
获取指定的类型
Type typeInt= typeof(int);
Type typeString= typeof(string);
Type typeFloat= typeof(float);
Type  typeRoleType=typeof(RoleType);
Type typeStudent= typeof(Student);
Type typeTeacher= typeof(Teacher);

 ?:  三目运算符
 int a = 12;
 //如果a大于18,grade="A",否则grade="B"
 string grade = a > 18 ? "A" : "B";
 
is 判断对象是否为某一类型
object a = 12;
if(a is int)
{
    Console.WriteLine("a是整型");
}
Teacher tea= new Teacher();
if(tea is Teacher)
{
    Console.WriteLine("tea是Teacher类型");
}

  as 强制转换
  object obj = "123";
  string str=obj as string;

类型转换

类型转换是将一个数据类型的值转换为另一个数据类型的过程。类型转换分为两种:隐式类型转换和显式类型转换。

隐式转换
  • 隐式类型转换是指编译器可以自动将一种数据类型转换为另一种数据类型,而无需显式指定转换操作符。
  • 隐式类型转换是由 C# 以类型安全的方式执行的,转换的过程中不会导致数据丢失。 例如从较小的整数类型(例如 int)转换到较大的整数类型(例如 long),从派生类转换为基类。 
int intValue = 10;
double doubleValue = intValue; // 隐式类型转换,int转换为double
 显式转换

显式类型转换也叫强制类型转换,这种转换需要使用(type)value的形式或者预定义函数显式的完成,显式转换需要用户明确的指定要转换的类型,而且在转换的过程中可能会造成数据丢失

常应用于:大范围转小范围 、浮点型转整型、浮点型与decimal 、数值字符串转值类型

double doubleValue = 10.5;
int intValue = (int)doubleValue; // 显式类型转换,double转换为int

c#内置的类型转换方法:  

例如:

Parse 方法:用于将字符串转换为其他基本数据类型,如整数、浮点数等。 

string strNumber = "123";
int intNumber = int.Parse(strNumber); // 将字符串转换为整数
double doubleNumber = double.Parse("3.14"); // 将字符串转换为浮点数

Convert.ToXxx 方法:用于将一种类型转换为另一种类型,如将字符串转换为整数、将对象转换为字符串等。

string strNumber = "42";
int intNumber = Convert.ToInt32(strNumber); // 将字符串转换为整数
string strValue = Convert.ToString(3.14); // 将浮点数转换为字符串

类型转换运算符:可以使用强制转换运算符(如 (int)(double))进行显式类型转换。

double doubleValue = 3.14;
int intValue = (int)doubleValue; // 将double类型转换为int类型

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

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

相关文章

使用colab进行yolov5小demo练习

输入一张动物的图片进行目标检测和分类 !pip install yolov5 import torch from PIL import Image from torchvision import transforms from yolov5.models.experimental import attempt_load from yolov5.utils.general import non_max_suppression# 加载YOLOv5模型 device …

Gradle 构建自动化工具入门

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. 简介 3. 常见的项目构建工具 4. 安装 4.1. 安装说明 4.2. 下载…

【小风扇/移动电源升压芯片方案】FP6291是一款异步内置MOS管升压恒压芯片 小封装(SOT23-6)设计简单外围器件少

芯片概述 FP6291是一款异步内置MOS管升压恒压芯片&#xff0c;与肖特基和电感形成回路组成升压架构&#xff1b; 工作电压2.6-5.5V&#xff0c;可适用已单节电池和5V供电升压&#xff1b; 恒压基准&#xff08;VFB&#xff09;为0.6V2%&#xff0c;误差小提高输出的准确度&…

前端开发攻略---用JavaScript将数字转换为中文。支持万亿以下的正整数;深入解析:JavaScript 函数详解数字转换为中文的实现原理与流程

1、演示 2、实现思路 函数名为 toChineseNumber&#xff0c;它的作用是将一个数字转换成对应的中文表示形式。这个函数是一个自定义的实现&#xff0c;通过一系列步骤将数字转换成中文。我会逐步解释每一部分&#xff0c;以确保您对代码的理解清晰明了。 首先&#xff0c;让我们…

2024第十五届蓝桥杯 C/C++ B组 参赛经历分享(以及部分题解)

前言 emmmmmm&#xff0c;dp杯居然不考dp了&#xff0c;蓝桥一直没怎么出过的高精度居然也考了&#xff08;当时居然因为没太复习那块知识直接模拟混分了&#xff09;&#xff0c;题量也改了&#xff0c;总的来说反而简单了&#xff1f;。。。还好天津竞赛弱省&#xff0c;但愿…

STM32学习和实践笔记(12):蜂鸣器实验

蜂鸣器主要分为两种&#xff0c;一种是压电式的无源蜂鸣器&#xff0c;一种是电磁式的有源蜂鸣器。 有源和无源是指其内部有没有振荡器。 无源的没有内部振荡器&#xff0c;需要输入1.5-5KHZ的音频信号来驱动压电蜂鸣片发声。 有源的内部有振荡器&#xff0c;因此只需要供给…

Jackson 2.x 系列【24】Spring Web 集成

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. Spring Web3. Jackson2ObjectMapperBuilder4. Jackson2ObjectMapperFa…

STL —— priority_queue

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C专栏 本篇文章主要讲解 priority_queue 的相关内容 目录 1. 优先级队列简介 基本操作 2. 模拟实现 2.1 入队操作 2.2 出队操作 2.3 访问队列顶部元素 2.4 判断优先队列是否为空 2.5 获取优先队列的大小 …

分布式向量数据库-安装部署

下载 GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres 源码编译 ##文件解压缩 unzip pgvector-0.6.2.zip ##编译 make && make install 功能验证 #安装扩展CREATE EXTENSION vector;#创建测试表CREATE TABLE items (id bigseri…

mysql题目1

tj11: ​ select * from t_student where grade 大一 and major 软件工程 ​ tj12: SELECTt_student.name, count(t_choice.cid)FROMt_choiceINNER JOINt_courseON t_choice.cid t_course.idINNER JOINt_studentON t_choice.sid t_student.id GROUP BYt_choice.sid HAVIN…

【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效

前言 【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效&#xff0c;灰度、负片、像素化特效一、UGUI特效插件&#xff1a;UIEffect1.1 介绍1.2 效果展示1.3 使用说明及下载 二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 使用灰度特效做头像(关卡)选择 总结 前…

win11电脑驱动怎么更新,windows11更新驱动

驱动是指计算机里软件的程序,硬件的运作离不开驱动的支持,因为驱动就是使得硬件和电脑系统沟通的桥梁。既然驱动如此重要,那么不装肯定不行,如果有问题,也要及时地修复和更新。最近,有位win11用户,想要了解win11电脑驱动怎么更新?接下来,教程会带来两种更新win11驱动的…

CodeForce[1500-2000]——1948D Tandem Repeats?

大概题目意思就是&#xff1a;给你一个只有小写字母和问号的字符串&#xff0c;可以在头或尾删除任意长度&#xff0c;得到一个字串&#xff0c;并且该字串要满足长度为偶数&#xff0c;前一半和后一半&#xff08;问号可以匹配任意字符&#xff09;相等&#xff0c;求这样的字…

专治Java底子差,线程操作篇(2)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

2024五一杯数学建模A题B题C题思路汇总分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

设计模式——2_9 模版方法(Template Method)

人们往往把任性也叫做自由&#xff0c;但是任性只是非理性的自由&#xff0c;人性的选择和自决都不是出于意志的理性&#xff0c;而是出于偶然的动机以及这种动机对感性外在世界的依赖 ——黑格尔 文章目录 定义图纸一个例子&#xff1a;从文件中获取信息分几步&#xff1f;Rea…

Hive概述与基本操作

一、Hive基本概念 1.什么是hive? &#xff08;1&#xff09;hive是数据仓库建模的工具之一 &#xff08;2&#xff09;可以向hive传入一条交互式的sql,在海量数据中查询分析得到结果的平台 2.Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算&#xff0c;底层由HDFS…

经典文献阅读之--A Survey on Generative Diffusion Models(扩散模型最新综述)

0. 简介 本文综述了深度生成模型&#xff0c;特别是扩散模型(Diffusion model)&#xff0c;如何赋予机器类似人类的想象力。扩散模型在生成逼真样本方面显示出巨大潜力&#xff0c;克服了变分自编码器中的后分布对齐障碍&#xff0c;缓解了生成对抗网络中的对抗性目标不稳定性…

深度挖掘响应式模式的潜力,从而精准优化AI与机器学习项目的运行效能,引领技术革新潮流

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f525; 转载自热榜文章&#xff1a;探索设计模式的魅力&#xff1a;深度挖掘响应式模式的…

uni-starter的微信登录拿不到登录者的昵称,头像,手机号问题记录

uni-starter的微信登录竟然拿不到登录者的昵称&#xff0c;头像&#xff0c;手机号 获取手机号的方法在另外一篇文章中&#xff0c;需要认证&#xff0c;需要有营业执照 uni.login({"provider": type,"onlyAuthorize": true,// #ifdef APP"univerif…