C# 教程总结概括

C# 教程

C# 是一种由微软开发的现代、面向对象的编程语言,广泛应用于Windows桌面应用程序、Web应用程序、游戏开发和移动应用程序等多个领域。本教程将详细介绍C#的基础知识、编程语法、数据类型、控制结构以及面向对象编程等方面的内容。

基础知识

什么是C#?

C#,读作“C Sharp”,是一种简单、安全、稳定、通用的面向对象编程语言。它继承了C/C++的强大功能,同时抛弃了一些复杂特性,并与Java非常类似。

C#的应用场景

C#运行在.NET Framework上,可以开发不同类型的应用程序,包括桌面应用程序、网络应用程序、分布式应用程序、Web服务应用程序、数据库应用程序等。

编程语法

变量与数据类型

在C#中,变量是存储数据的基本单位。声明变量时,需要指定其数据类型和名称。

int age = 30; // 声明一个整型变量age,并初始化为30
string name = "Alice"; // 声明一个字符串类型变量name,并初始化为"Alice"
bool isHappy = true; // 声明一个布尔类型变量isHappy,并初始化为true

运算符

C#提供了丰富的运算符,用于进行各种运算操作,包括算术运算符、赋值运算符、关系运算符和逻辑运算符等。

int a = 10;
int b = 5;
int sum = a + b; // 使用算术运算符+计算a和b的和
bool isGreater = a > b; // 使用关系运算符>判断a是否大于b

数据类型

C#支持多种数据类型,包括值类型和引用类型。
C#支持多种数据类型,包括值类型和引用类型。值类型主要包括整数类型(如int、short、long等)、浮点数类型(如float、double等)、字符类型(char)和布尔类型(bool)。这些数据类型直接存储值,当你将一个值类型赋给另一个变量时,会创建一个新的副本。

以下是一个C#代码示例,说明了值类型直接存储值,当将一个值类型赋给另一个变量时,会创建一个新的副本:

using System;

namespace ValueTypeExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 声明并初始化一个整数变量
            int num1 = 10;

            // 将num1的值赋给另一个整数变量
            int num2 = num1;

            // 修改num2的值
            num2 = 20;

            // 输出num1和num2的值
            Console.WriteLine("num1的值: " + num1); // 输出: num1的值: 10
            Console.WriteLine("num2的值: " + num2); // 输出: num2的值: 20
        }
    }
}

在这个示例中,我们声明了一个整数变量num1并将其值设置为10。然后,我们将num1的值赋给另一个整数变量num2。接下来,我们修改num2的值为20。最后,我们输出num1num2的值。

从这个示例中,我们可以看到,当我们将num1的值赋给num2时,实际上是为num2创建了一个新的副本。因此,当我们修改num2的值时,num1的值不会受到影响。这表明了值类型直接存储值,并且在将一个值类型赋给另一个变量时,会创建一个新的副本。

引用类型包括类、接口、数组和字符串等。引用类型存储的是对象在内存中的地址,而不是对象本身的值。当你将一个引用类型赋给另一个变量时,实际上是将对象内存地址的引用复制给新变量。这意味着两个变量将引用同一个对象,改变其中一个变量的值,另一个变量的值也会受到影响。

费曼学习法解释: 简单来说,引用类型就像是我们生活中的地址一样。当我们创建一个类、接口、数组或字符串时,它们在计算机内存中都有一个地址。我们把这些地址存储在变量里。当我们把一个引用类型的变量赋给另一个变量时,就像是把一张写有地址的纸条从一本笔记本上撕下来,贴到另一本笔记本上。这样一来,两本笔记本上的地址都是相同的,它们都指向同一个对象。所以,当我们改变其中一个变量的值时,另一个变量的值也会跟着改变,因为它们都指向同一个对象。

C#代码例子:

class Person
{
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建一个Person对象
        Person person1 = new Person { Name = "张三&

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

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

相关文章

Linux:理解动静态库

一、前言 如果我们写了一些方法想给别人用??有什么办法呢?? ——>(1)我直接把头文件和源文件给他(.c.h) ——>这样会让别人轻易看到你的实现 (2)把源文件打包成库&#xff…

快速了解SpringBoot 统一功能处理

拦截器 什么是拦截器: 拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…

随着最新的补丁更新,Windows 再次变得容易受到攻击

SafeBreach专家Alon Leviev发布了一款名为 Windows Downdate的工具,可用于对Windows 10、Windows 11 和 Windows Server 版本进行降级攻击。 这种攻击允许利用已经修补的漏洞,因为操作系统再次容易受到旧错误的影响。 Windows Downdate 是一个开源Pyth…

Linux笔记-对Linux环境变量的进一步认识(2024-08-09)

此篇公开到互联网上的时间是:2024-11-11 主要是PATH和LD_LIBRARY_PATH。 基本概念 在 Linux 中,PATH 和 LD_LIBRARY_PATH 是两个不同的环境变量,它们的作用和使用场景有所不同。 PATH 作用:用来指定可执行文件的搜索路径。当你…

Linux操作系统之DHCP服务部署与配置

一、实验目的 1、理解DHCP的定义和工作原理; 2、掌握DHCP服务器的配置方法。 二、实验环境 1台PC、VMware虚拟机、3个CentOS7操作系统 三、实验步骤及内容 1、使用yum安装dhcp; 图1 安装DHCP服务 图2 查看DHCP是否安装 2、修改VM中虚拟网络编辑器…

优化时钟网络之时钟抖动

Note:文章内容以Xilinx 7系列FPGA进行讲解 1、什么是时钟抖动 时钟抖动就是时钟周期之间出现的偏差。比如一个时钟周期为10ns的时钟,理想情况下,其上升沿会出现在0ns,10ns,20ns时刻,假设某个上升沿出现的时…

第三十六章 Vue之路由重定向/404页面设置/路径模式设置

目录 一、路由重定向 1.1. 使用方式 1.2. 完整代码 1.2.1. main.js 1.2.2. App.vue 1.2.3. index.js 1.2.4. Search.vue 1.2.5. Home.vue 1.3. 运行效果 二、设定404错误页面 2.1. 使用方式 2.2. 完整代码 2.2.1. index.js 2.2.2. NotFound.vue 2.2.3. 运行效…

PostgreSQL的奥秘:深入探究事务与锁的秘密世界

PostgreSQL事务 1. 概述 在数据库系统中,事务(Transaction)是执行数据库操作的最小逻辑单位。它确保了一组操作的完整性和一致性。事务可以通过显式的 BEGIN、COMMIT 和 ROLLBACK 语句块来控制,也可以在自动提交模式&#xff08…

Three.js 搭建3D隧道监测

Three.js 搭建3D隧道监测 Three.js 基础元素场景scene相机carema网络模型Mesh光源light渲染器renderer控制器controls 实现3d隧道监测基础实现道路实现隧道实现多个摄像头点击模型进行属性操作实现点击模型发光效果 性能监视器stats引入使用 总结完整代码 我们将通过three.js技…

netstat中sendq/recvq用于排查发送端发送数据的问题

web同事开发了一个用于接收syslog数据的服务器,不清楚web的开发方式,用来联调的发送端是我们的C模块 反馈syslog udp形式接收正常,速度正常,数量也正常,syslog tcp形式接收开始比较快后面越来越慢,并且知道…

基于python主观题自动阅卷系统毕业设计项目

基于python主观题自动阅卷系统毕业设计项目 大家好,我是陈辰学长,一名在 Java 圈辛勤劳作的码农。今日,要和大家分享的是一款基于python主观题自动阅卷系统毕业设计。项目源码以及部署相关事宜,请联系陈辰学长,文末会…

SparkSql读取数据的方式

一、读取普通文件 方式一:给定读取数据源的类型和地址 spark.read.format("json").load(path) spark.read.format("csv").load(path) spark.read.format("parquet").load(path) 方式二:直接调用对应数据源类型的方法 …

LSTM+LightGBM+Catboost的stacking融合模型

基本介绍 针对目前大部分数据同时具有特征连续和特征不连续的特点,将神经网络模型如LSTM和回归树模型如XGboost,基于stacking集成学习原理进行融合 附有模型评价指标R2、RMSE、MAE、MSE,代码包含注释,可以直接运行。 融合过程 在机器学习中…

重学 Android 自定义 View 系列:动手实现专属 TextView

前言 前面一篇介绍了自定义View的基础概念(皮毛),接下来全部是自定义View实战,让我们一起开启自定义View之旅吧! 1. 实现目标 本篇将实现一个自定义的TextView,通过自定义属性让我们可以配置文本内容、颜色、字体大小。主要是掌…

多用户商城系统的功能及设计和开发

多用户商城系统的功能及设计与开发(基于 PHP MySQL) 在现代电子商务平台的开发中,PHP MySQL 是一对非常流行且高效的技术栈。PHP作为服务器端脚本语言,结合MySQL数据库,可以高效地处理多用户商城系统的各种需求。本…

丹摩征文活动|快速上手 CogVideoX-2b:智谱清影 6 秒视频生成部署教程

文章目录 一、生成视频效果 二、CogVideoX 技术新起点三、CogVideoX 上手部署3.1 创建丹摩实例3.2 配置环境和依赖3.3 模型与配置文件3.4 运行3.5 问题与处理方法 四、CogVideoX-2b 用创新点燃未来 一、生成视频效果 A street artist, clad in a worn-out denim jacket and a c…

实现 think/queue 日志分离

当我们使用think/queue包含了比较多的不同队列,日志会写到runtime/log目录下,合并写入的,不好排查问题,我们遇到一个比较严重的就是用了不同用户来执行,权限冲突了,导致部分队列执行不了. 为了解决以上问题,本来希望通过Log::init设置不同日志路径的,但是本地测试没生效,于是用…

Ubuntu24.04安装Perforce服务

安装 参考链接:https://www.perforce.com/manuals/p4sag/Content/P4SAG/install.linux.packages.install.html Perforce是一款收费的版本控制管理工具,当然其中也有一些免费的教学版本,应需要下载。 下载网址: https://www.perforce.com/downloads/helix-core-p4d安装前…

使用 GitHub Actions 部署到开发服务器的详细指南

使用 GitHub Actions 部署到开发服务器的详细指南 在本篇博客中,我们将介绍如何使用 GitHub Actions 实现自动化部署,将代码从 GitHub 仓库的 dev 分支自动部署到开发服务器。通过这种方式,可以确保每次在 dev 分支推送代码时,服…

Logrus入门

Logrus入门 1. 下载 go get github.com/sirupsen/logrus2. logrus常用方法 logrus.Debugln("Debugln") logrus.Infoln("Infoln") logrus.Warnln("Warnln") logrus.Errorln("Errorln") logrus.Println("Println")// 输出如…