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

C#基础教程

1. C# 基础语法和操作符

C# 中的运算符优先级
namespace OperatorsAppl
{class Program7{static void Main(string[] args){int a = 20;  // 定义变量aint b = 10;  // 定义变量bint c = 15;  // 定义变量cint d = 5;  // 定义变量dint e;      // 定义变量e// 演示运算符优先级,计算 (a + b) * c / de = (a + b) * c / d;Console.WriteLine("(a + b) * c / d 的值是 {0}", e);  // 输出结果// 更多运算符优先级示例...}}
}

2. 数据类型和控制结构

C# 中的变量定义和初始化
// C# 中的变量定义和初始化
int i, j, k;   // 定义整型变量i, j, k
char c, ch;   // 定义字符型变量c, ch
float f, salary;  // 定义浮点型变量f, salary
double d;   // 定义双精度浮点型变量dint d = 3, f = 5;    /* 初始化d和f */
byte z = 22;         /* 初始化z */
double pi = 3.14159; /* 声明pi的近似值 */
char x = 'x';        /* 变量x的值为'x' */
C# 中的控制结构 - 条件语句
// C# 中的条件语句
int a = 10, b = 5;
string result = a > b ? "a大于b" : "a不大于b";  // 使用三元运算符进行条件判断
Console.WriteLine(result);  // 输出结果
C# 中的控制结构 - 循环
// C# 中的循环
for (int i = 0; i < 5; i++)  // for循环,从0到4
{Console.WriteLine(i);  // 输出循环变量i的值
}

3. 字符串和数组操作

C# 字符串操作
// C# 字符串操作
string str = "Hello, World!";  // 定义字符串str
Console.WriteLine(str);  // 输出字符串
C# 数组操作
// C# 数组操作
int[] array = new int[5] { 1, 2, 3, 4, 5 };  // 定义并初始化数组
foreach (var item in array)  // 使用foreach循环遍历数组
{Console.WriteLine(item);  // 输出数组元素
}

4. 函数和方法

C# 方法的定义和调用
namespace CalculatorApplication
{class NumberManipulator{public int FindMax(int num1, int num2)  // 定义FindMax方法,返回两个整数中的最大值{return num1 > num2 ? num1 : num2;  // 使用三元运算符返回最大值}static void Main(string[] args)  // 程序入口点{NumberManipulator n = new NumberManipulator();  // 创建NumberManipulator实例int max = n.FindMax(100, 200);  // 调用FindMax方法Console.WriteLine("最大值是: {0}", max);  // 输出结果}}
}

5. 类和对象

C# 类的定义和对象的创建
namespace BoxApplication
{class Box  // 定义Box类{public double length;  // 定义长度属性public double breadth;  // 定义宽度属性public double height;  // 定义高度属性}class BoxTester  // 定义BoxTester类{static void Main(string[] args)  // 程序入口点{Box Box1 = new Box();  // 创建Box实例Box1.length = 6.0;  // 设置长度Box1.breadth = 7.0;  // 设置宽度Box1.height = 5.0;  // 设置高度Console.WriteLine("Box1 的体积: {0}", Box1.length * Box1.breadth * Box1.height);  // 计算并输出体积}}
}

6. 继承和多态性

C# 继承
namespace InheritanceApplication  // 定义一个名为InheritanceApplication的命名空间
{// 定义一个名为Shape的基类,表示一个形状class Shape{protected int width, height;  // 定义两个受保护的成员变量,分别表示形状的宽度和高度// 定义一个公共方法setWidth,用于设置宽度public void setWidth(int w) { width = w; }// 定义一个公共方法setHeight,用于设置高度public void setHeight(int h) { height = h; }}// 定义一个名为Rectangle的类,它继承自Shape类,表示一个矩形class Rectangle : Shape{// 定义一个公共方法getArea,用于计算矩形的面积public int getArea() { return width * height; }}// 定义一个名为RectangleTester的类,包含程序的入口点Main方法class RectangleTester{static void Main(string[] args)  // 程序的入口点,Main方法{// 创建一个Rectangle对象Rectangle Rect = new Rectangle();// 直接设置Rectangle对象的width和height属性Rect.width = 5;  // 设置宽度为5Rect.height = 7;  // 设置高度为7// 计算并输出矩形的面积Console.WriteLine("总面积: {0}", Rect.getArea());  // 输出矩形的面积}}
}
C# 多态性
namespace PolymorphismApplication  // 定义一个名为PolymorphismApplication的命名空间
{// 定义一个名为Box的类,用于表示一个长方体盒子class Box{public double length, breadth, height;  // 定义三个公共变量,分别表示盒子的长度、宽度和高度// 定义一个构造函数,用于初始化Box对象的三个维度public Box(double l, double b, double h){length = l; breadth = b; height = h;}// 定义一个方法getVolume,用于计算并返回盒子的体积public double getVolume() { return length * breadth * height; }}// 定义一个名为Tester的类,包含程序的入口点Main方法class Tester{static void Main(string[] args)  // 程序的入口点,Main方法{// 创建两个Box对象,分别表示两个不同尺寸的长方体盒子Box Box1 = new Box(6.0, 7.0, 5.0);Box Box2 = new Box(12.0, 13.0, 10.0);// 计算并输出这两个盒子的体积Console.WriteLine("Box1 的体积: {0}", Box1.getVolume());  // 输出Box1的体积Console.WriteLine("Box2 的体积: {0}", Box2.getVolume());  // 输出Box2的体积}}
}

7. 接口和抽象类

C# 接口
// 定义一个名为IMyInterface的接口
interface IMyInterface
{// 在接口中声明一个必须由实现类实现的方法void MethodToImplement();
}// 定义一个名为InterfaceImplementer的类,它实现了IMyInterface接口
class InterfaceImplementer : IMyInterface
{// 实现接口中声明的方法public void MethodToImplement(){Console.WriteLine("MethodToImplement() called.");  // 输出一条消息到控制台}// 程序的入口点,Main方法static void Main(){// 创建InterfaceImplementer类的实例InterfaceImplementer iImp = new InterfaceImplementer();// 调用实现的方法iImp.MethodToImplement();  // 这将输出"MethodToImplement() called."到控制台// 注意:这里没有Console.ReadKey();调用,控制台窗口会在Main方法执行完毕后立即关闭}
}

8. 异常处理

C# 异常处理
namespace ErrorHandlingApplication  // 定义一个名为ErrorHandlingApplication的命名空间
{class DivNumbers  // 定义一个名为DivNumbers的类,用于处理除法运算{int result;  // 定义一个整型变量result,用于存储除法运算的结果DivNumbers() { result = 0; }  // 构造函数,初始化result为0public void division(int num1, int num2)  // 定义一个公共方法division,接受两个整数参数{try  // 尝试执行try块中的代码{result = num1 / num2;  // 执行除法运算,将结果存储在result变量中}catch (DivideByZeroException e)  // 如果在try块中抛出DivideByZeroException异常,则执行catch块{Console.WriteLine("Exception caught: {0}", e);  // 输出异常信息}finally  // 无论是否发生异常,都会执行finally块中的代码{Console.WriteLine("Result: {0}", result);  // 输出result变量的值}}static void Main(string[] args)  // 程序的入口点,Main方法{DivNumbers d = new DivNumbers();  // 创建DivNumbers类的实例d.division(25, 0);  // 调用division方法,传入25和0作为参数,这将触发除以零的异常Console.ReadKey();  // 等待用户按下任意键,防止控制台窗口立即关闭}}
}

9. 文件 I/O

C# 文件的输入与输出
using System;  // 引入System命名空间,提供基本的类和功能
using System.IO;  // 引入System.IO命名空间,提供文件和目录操作的功能namespace FileIOApplication  // 定义一个名为FileIOApplication的命名空间
{class Program  // 定义一个名为Program的类,包含程序的入口点{static void Main(string[] args)  // 程序的入口点,Main方法{// 使用FileStream类创建或打开一个名为"test.dat"的文件,文件模式为OpenOrCreate,访问权限为读写FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);// 循环20次,每次写入一个递增的字节到文件中for (int i = 1; i <= 20; i++){F.WriteByte((byte)i);  // 将整数i转换为字节并写入文件}// 将文件流的位置指针重置到文件的开头F.Position = 0;// 循环21次,每次从文件中读取一个字节并输出到控制台for (int i = 0; i <= 20; i++){Console.Write(F.ReadByte() + " ");  // 读取一个字节并将其转换为整数,然后输出到控制台}// 关闭文件流,释放资源F.Close();// Console.ReadKey方法用于等待用户按下任意键,防止控制台窗口立即关闭Console.ReadKey();}}
}

10. 正则表达式

C# 正则表达式
using System;  // 引入System命名空间,提供基本的类和功能
using System.Text.RegularExpressions;  // 引入System.Text.RegularExpressions命名空间,提供正则表达式的功能namespace RegExApplication  // 定义一个名为RegExApplication的命名空间
{class Program  // 定义一个名为Program的类,包含程序的入口点{static void Main(string[] args)  // 程序的入口点,Main方法{// 定义一个字符串变量input,存储原始的字符串string input = "Hello   World   ";// 定义一个字符串变量pattern,存储正则表达式的模式,这里"\\s+"表示匹配一个或多个空白字符string pattern = "\\s+";// 定义一个字符串变量replacement,存储替换后的字符串,这里用单个空格替换匹配到的多个空格string replacement = " ";// 创建一个Regex对象rgx,用于执行正则表达式操作Regex rgx = new Regex(pattern);// 使用Replace方法将input字符串中匹配pattern的部分替换为replacement字符串string result = rgx.Replace(input, replacement);// 使用Console.WriteLine方法输出原始字符串Console.WriteLine("Original String: {0}", input);// 使用Console.WriteLine方法输出替换后的字符串Console.WriteLine("Replacement String: {0}", result);// Console.ReadKey方法用于等待用户按下任意键,防止控制台窗口立即关闭Console.ReadKey();}}
}

11. 自定义异常

C# 创建用户自定义异常
using System;using System;namespace UserDefinedException
{public class TempIsZeroException : ApplicationException{// 构造函数,允许传递自定义错误消息public TempIsZeroException(string message) : base(message){}// 可以选择添加更多的构造函数,例如无参数的构造函数// 或者包含异常内部信息的构造函数public TempIsZeroException(){}// 包含错误消息和内部异常的构造函数public TempIsZeroException(string message, Exception inner) : base(message, inner){}}
}

相关文章:

C#基础教程

1. C# 基础语法和操作符 C# 中的运算符优先级 namespace OperatorsAppl {class Program7{static void Main(string[] args){int a 20; // 定义变量aint b 10; // 定义变量bint c 15; // 定义变量cint d 5; // 定义变量dint e; // 定义变量e// 演示运算符优先级&…...

Alibaba EasyExcel 导入导出全家桶

一、阿里巴巴EasyExcel的优势 首先说下EasyExcel相对 Apache poi的优势&#xff1a; EasyExcel也是阿里研发在poi基础上做了封装&#xff0c;改进产物。它替开发者做了注解列表解析&#xff0c;表格填充等一系列代码编写工作&#xff0c;并将此抽象成通用和可扩展的框架。相对p…...

Spring Cloud + MyBatis Plus + GraphQL 完整示例

Spring Cloud MyBatis Plus GraphQL 完整示例 1、创建Spring Boot子项目1.1 配置POM&#xff0c;添加必要的依赖1.2 配置MyBatis-Plus 2、集成GraphQL2.1 定义schema.graphqls2.2 添加GraphQL解析器2.3 配置schame文件配置 3、访问测试3.1 查询测试&#xff08;演示&#xff…...

uni-app简洁的移动端登录注册界面

非常简洁的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可&#xff0c;无任何引用&#xff0c;全部公开。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class&quo…...

LongVU:用于长视频语言理解的空间时间自适应压缩

晚上闲暇时间看到一种用于长视频语言理解的空间时间自适应压缩机制的研究工作LongVU&#xff0c;主要内容包括&#xff1a; 背景与挑战&#xff1a;多模态大语言模型&#xff08;MLLMs&#xff09;在视频理解和分析方面取得了进展&#xff0c;但处理长视频仍受限于LLM的上下文长…...

Elasticsearch数据迁移(快照)

1. 数据条件 一台原始es服务器&#xff08;192.168.xx.xx&#xff09;&#xff0c;数据迁移后的目标服务器&#xff08;10.2.xx.xx&#xff09;。 2台服务器所处环境&#xff1a; centos7操作系统&#xff0c; elasticsearch-7.3.0。 2. 为原始es服务器数据创建快照 修改elas…...

Linux Cgroup学习笔记

文章目录 Cgroup(Control Group)引言简介Cgroup v1通用接口文件blkio子系统cpu子系统cpuacct子系统cpuset子系统devices子系统freezer子系统hugetlb子系统memory子系统net_cls子系统net_prio子系统perf_event子系统pids子系统misc子系统 Cgroup V2基础操作组织进程和线程popula…...

百问FB显示开发图像处理 - PNG图像处理

2.3 PNG图像处理 2.3.1 PNG文件格式和libpng编译 ​ 跟JPEG文件格式一样&#xff0c;PNG也是一种使用了算法压缩后的图像格式&#xff0c;与JPEG不同&#xff0c;PNG使用从LZ77派生的无损数据压缩算法。对于PNG文件格式&#xff0c;也有相应的开源工具libpng。 libpng库可从…...

【JavaWeb后端学习笔记】MySQL多表查询(内连接、外连接、子查询)

MySQL 多表查询 1、连接查询1.1 内连接1.2 外连接 2、子查询2.1 标量子查询2.2 列子查询2.3 行子查询2.4 表子查询 3、多表查询案例 多表查询有两大类&#xff1a;连接查询和子查询。 连接查询又分为隐式/显式内连接和左/右外连接。 子查询又分为标量子查询、列子查询、行子查询…...

RocketMQ 过滤消息 基于tag过滤和SQL过滤

RocketMQ 过滤消息分为两种&#xff0c;一种tag过滤&#xff0c;另外一种是复杂的sql过滤。 tag过滤 首先创建producer然后启动&#xff0c;在这里创建了字符串的数组tags。字符串数组里面放置了多个字符串&#xff0c;然后去发送15条消息。 15条消息随着i的增长&#xff0c;…...

element-ui 基本样式的一些更改【持续更新】

1、 去除el-tabs的底部灰色横线 ::v-deep .el-tabs__nav-wrap::after {height: 0px;}2、el-table设置表头颜色 <el-table:data"tableData":header-cell-style"{background:#F7F8FA,color:#4E5869}"><el-table-columnlabel"序号"type&qu…...

element-ui radio和checkbox禁用时不置灰还是原来不禁用时的样式

把要紧用的内容加上一个class"notEdit-page" z注意要在style里面写不能加上scoped /*//checkBox自定义禁用样式*//*//checkBox自定义禁用样式*/ .notEdit-page.el-checkbox__input.is-disabled.is-checked.el-checkbox__inner::after {border-color: #fff; } .notEdi…...

第一部分:基础知识 6. 函数 --[MySQL轻松入门教程]

MySQL 提供了丰富的内置函数&#xff0c;涵盖了字符串处理、数值计算、日期时间操作、聚合分析以及控制流等多个方面。这些函数可以帮助用户更高效地进行数据查询和处理。 1.字符串函数 MySQL 提供了丰富的字符串函数来帮助用户处理和操作字符串数据。下面是一些常用的 MySQL…...

【蓝桥杯每日一题】扫雷

扫雷 知识点 2024-12-3 蓝桥杯每日一题 扫雷 dfs &#xff08;bfs也是可行的&#xff09; 题目大意 在一个二维平面上放置这N个炸雷&#xff0c;每个炸雷的信息有$(x_i,y_i,r_i) $&#xff0c;前两个是坐标信息&#xff0c;第三个是爆炸半径。然后会输入M个排雷火箭&#xff0…...

【算法】棋盘覆盖问题源代码及精简版

目录 一、题目 二、样例 三、示例代码 四、精简代码 五、总结 对于棋盘覆盖问题的解答和优化。 一、题目 输入格式&#xff1a; 第一行&#xff0c;一个整数n&#xff08;棋盘n*n&#xff0c;n确保是2的幂次&#xff0c;n<64&#xff09; 第二行&#xff0c;两个整数…...

Django的介绍

Django是一个高级的Python Web框架&#xff0c;它鼓励快速开发和干净、实用的设计。Django遵循MVC设计模式&#xff0c;即模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;&#xff0c;并提供了一个即时可用的…...

【Spring工具插件】lombok使用和EditStarter插件

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入 一&#xff1a;lombok介绍 1&#xff1a;引入依赖 2&#xff1a;使用 3&#xff1a;原理 4&…...

掌控时间,成就更好的自己

在个人成长的道路上&#xff0c;时间管理是至关重要的一环。有效的时间管理能够让我们更加高效地完成任务&#xff0c;实现自己的目标&#xff0c;不断提升自我。 时间对每个人都是公平的&#xff0c;一天只有 24 小时。然而&#xff0c;为什么有些人能够在有限的时间里做出卓…...

Ruby On Rails 笔记2——表的基本知识

Active Record Basics — Ruby on Rails Guides Active Record Migrations — Ruby on Rails Guides 原文链接自取 1.Active Record是什么&#xff1f; Active Record是MVC模式中M的一部分&#xff0c;是负责展示数据和业务逻辑的一层&#xff0c;可以帮助你创建和使用Ruby…...

【AI系统】EfficientNet 系列

EfficientNet 系列 本文主要介绍 EffiicientNet 系列&#xff0c;在之前的文章中&#xff0c;一般都是单独增加图像分辨率或增加网络深度或单独增加网络的宽度&#xff0c;来提高网络的准确率。而在 EfficientNet 系列论文中&#xff0c;会介绍使用网络搜索技术(NAS)去同时探索…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...