以C++为基础快速了解C#

using System: - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句, 相当于C++的 using namespace std;

在这里插入图片描述

C# 是大小写敏感的。

所有的语句和表达式必须以分号(;)结尾。

程序的执行从 Main 方法开始。

与 Java 不同的是,文件名可以不同于类的名称。

构造函数

和C++一样,如果显示编写了构造函数,默认构造就不会自动构造,需要提供无参的构造,不然就不能用new Circle()来构造。
如果不初始化字段,会调用自己的构造函数。上面的int就会默认构造为0、
在这里插入图片描述

顶级语句

一句话:可以想像写Python一样写。

特点:

无需类或方法:顶级语句允许你直接在文件的顶层编写代码,无需定义类或方法。

文件作为入口点:包含顶级语句的文件被视为程序的入口点,类似于 C# 之前的 Main 方法。

自动 Main 方法:编译器会自动生成一个 Main 方法,并将顶级语句作为 Main 方法的主体。

支持局部函数:尽管不需要定义类,但顶级语句的文件中仍然可以定义局部函数。

更好的可读性:对于简单的脚本或工具,顶级语句提供了更好的可读性和简洁性。

适用于小型项目:顶级语句非常适合小型项目或脚本,可以快速编写和运行代码。

与现有代码兼容:顶级语句可以与现有的 C# 代码库一起使用,不会影响现有代码。

类型

值类型:
在这里插入图片描述

C#中类的拷贝

在这里插入图片描述
为了深拷贝,首先需要提供拷贝构造,和cpp一样
在这里插入图片描述
且和CPP不一样的是:他需要显示调用
在这里插入图片描述

运算符

在这里插入图片描述

循环:

while, for, do while 和CPP一样。

foreach循环:类似CPP的for(auto e : v)语句。

在这里插入图片描述

Sting

在这里插入图片描述

可以使用以下方法之一来创建 string 对象:

通过给 String 变量指定一个字符串 通过使用 String 类构造函数 通过使用字符串串联运算符( + )
通过检索属性或调用一个返回字符串的方法 通过格式化方法来转换一个值或对象为它的字符串表示形式
在这里插入图片描述

string的类方法:
Compare()
在这里插入图片描述
Concat:链接两个字符串对象
在这里插入图片描述

Contains:判断字符串中是否有某个字符串对象
在这里插入图片描述
Substring(某位置,截取几个)
从字符串的某个位置截取几个字符
在这里插入图片描述
Join:链接字符串数组
在这里插入图片描述

类型转换:

隐式和强制:
在这里插入图片描述

在这里插入图片描述

从标准输入中输入数据(默认键盘文件)

在这里插入图片描述

访问限定符和继承

public:所有对象都可以访问;

private:对象本身在对象内部可以访问;

protected:只有该类对象及其子类对象可以访问

internal:同一个程序集的对象可以访问;

protected internal:访问限于当前程序集或派生自包含类的类型。

不写默认是private

protected相关的用于继承,和CPP一样,不赘述。

数组作为形参

params修饰的数组形参:params参数必须是最后一个参数。

在这里插入图片描述

Struct 封装

简单使用
直接先放一个使用的例子,和C++的简单使用是相同的。
在这里插入图片描述

struct vs class

不能给结构定义无参构造函数,无参构造函数是默认自动定义的 结构里可以实现一个或者多个接口

结构成员不能被指定为 abstract, virtual, protected

当使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New
操作符即可被实例化。但是如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

结构是值类型,在栈上。结构赋值给另一个变量的时候,是深拷贝。类是引用类型,在堆上。类赋值的时候如果不调用拷贝构造,则是浅拷贝。
结构不支持继承和多态,但类可以

结构不能有无参数的构造函数: 结构不能包含无参数的构造函数。每个结构都必须有至少一个有参数的构造函数。类可以有无参数的构造函数: 类可以包含无参数的构造函数,如果没有提供构造函数,系统会提供默认的无参数构造函数

结构不能有无参数的构造函数: 结构不能包含无参数的构造函数。每个结构都必须有至少一个有参数的构造函数。类可以有无参数的构造函数: 类可以包含无参数的构造函数,如果没有提供构造函数,系统会提供默认的无参数构造函数
在这里插入图片描述

构造和析构:和C++基本相同

静态成员只有一个副本

class MyClass
{public const int a = 10;public static int b = 20;
}
public void Test2()
{Console.WriteLine(MyClass.a); // 10Console.WriteLine(MyClass.b++); // 20Console.WriteLine(MyClass.b); // 21
}

继承和多态
和C++基本一致,不赘述概念和规则了。

这里放一个函数重写的例子吧。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象的思维hong

首尾相连和转多段线

Mysql--基础篇--数据类型(整数,浮点数,日期,枚举,二进制,空间类型等)

MySQL提供了多种数据类型,用于定义表中列的数据格式。选择合适的数据类型不仅可以提高查询性能,还能确保数据的完整性和准确性。 一、数值类型 数值类型用于存储整数、浮点数和定点数。根据精度和范围的不同,数值类型可以分为以下几类&…

nlp培训重点-2

1. 贝叶斯公式 import math import jieba import re import os import json from collections import defaultdictjieba.initialize()""" 贝叶斯分类实践P(A|B) (P(A) * P(B|A)) / P(B) 事件A:文本属于类别x1。文本属于类别x的概率,记做…

sunrays-framework(太阳射线框架搭建)

文章目录 1.基本环境搭建1.创建项目sunrays-framework2.新增忽略文件3.删除src目录4.交给Git管理 2.sunrays-dependencies模块:统一管理依赖1.创建模块2.不要交给父模块管理,这是独立的!!!3.删除src目录4.pom.xml统一管…

JVM vs JDK vs JRE

JVM是Java虚拟机的缩写, 用于实现Java的一次编译,处处运行。 Java代码写成.class后,由本地的虚拟机运行。 JDK(Java Development Kit)是一个功能齐全的 Java 开发工具包,供开发者使用。 JDK包含了JRE。…

Android修改开机动画路径

frameworks\base\cmds\bootanimation\BootAnimation.cpp 路径的定义 优先查找的顺序

select下拉框,首次进入页面没有显示value的情况

bug场景: 类似这种bug情况排查如下: 首先 理解含义 options就是存放键值对的,id就是key,对上了它就自动把label显示 而且如果你用来当作key和label的字段,与后端返回的不一致,还可以进行更改 其次 排查接…

Redis中的主从/Redis八股

四、Redis主从 1.搭建主从架构 不像是负载均衡,这里是主从,是因为redis大多数是读少的是写 步骤 搭建实例(建设有三个实例,同一个ip不同端口号) 1)创建目录 我们创建三个文件夹,名字分别叫700…

Mysql--基础篇--函数(字符串函数,日期函数,数值函数,聚合函数,自定义函数及与存储过程的区别等)

MySQL提供了丰富的内置函数,涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流等多种功能。这些函数可以帮助你简化SQL查询,提升开发效率。 除了内置函数,MySQL还支持自定义函数(User-Defined Functions)…

【linux系统之redis6】redis的安装与初始化

下载redis的linux对应的安装包,并上传到linux虚拟机里面 解压压缩包 tar -zxzf redis-6.2.6.tar.gz解压后,进入redis文件 cd redis-6.2.6执行编译 make && make install看到下图,就说明redis安装成功了 默认的安装路径&#xff0c…

怎么管理电脑usb接口,分享四种USB端口管理方法

怎么管理电脑usb接口,分享四种USB端口管理方法 USB接口作为电脑重要的外部接口,方便了数据传输和设备连接。 然而,不加管理的USB接口也可能带来安全隐患,例如数据泄露、病毒传播等。 因此,有效管理电脑USB接口至关重…

[开源]自动化定位建图系统

系统状态机: 效果展示: 1、 机器人建图定位系统-基础重定位,定位功能演示 2、 机器人建图定位系统-增量地图构建,手动回环检测演示 3、… 开源链接: https://gitee.com/li-wenhao-lwh/lifelong-backend Qt人机交互…

重新整理机器学习和神经网络框架

本篇重新梳理了人工智能(AI)、机器学习(ML)、神经网络(NN)和深度学习(DL)之间存在一定的包含关系,以下是它们的关系及各自内容,以及人工智能领域中深度学习分支对比整理。…

PyTorch 框架实现线性回归:从数据预处理到模型训练全流程

系列文章目录 01-PyTorch新手必看:张量是什么?5 分钟教你快速创建张量! 02-张量运算真简单!PyTorch 数值计算操作完全指南 03-Numpy 还是 PyTorch?张量与 Numpy 的神奇转换技巧 04-揭秘数据处理神器:PyTor…

Elasticsearch:优化的标量量化 - 更好的二进制量化

作者:来自 Elastic Benjamin Trent 在这里,我们解释了 Elasticsearch 中的优化标量量化以及如何使用它来改进更好的二进制量化 (Better Binary Quantization - BBQ)。 我们的全新改进版二进制量化 (Better Binary Quantization - BBQ) 索引现在变得更强大…

科普CMOS传感器的工作原理及特点

在当今数字化成像的时代,图像传感器无疑是幕后的关键 “功臣”,它宛如一位神奇的 “光影魔法师”,通过光电效应这一奇妙的物理现象,将光子巧妙地转换成电荷,为图像的诞生奠定基础。而在众多类型的图像传感器中&#xf…

IDEA中Maven依赖包导入失败报红的潜在原因

在上网试了别人的八个问题总结之后依然没有解决&#xff1a; IDEA中Maven依赖包导入失败报红问题总结最有效8种解决方案_idea导入依赖还是报红-CSDN博客https://blog.csdn.net/qq_43705131/article/details/106165960 江郎才尽之后突然想到一个原因&#xff1a;<dep…

Java100道面试题

1.JVM内存结构 1. 方法区&#xff08;Method Area&#xff09; 方法区是JVM内存结构的一部分&#xff0c;用于存放类的相关信息&#xff0c;包括&#xff1a; 类的结构&#xff08;字段、方法、常量池等&#xff09;。字段和方法的描述&#xff0c;如名称、类型、访问修饰符…

虚表 —— 隐藏行(简单版)

因为隐藏行改变了listview内部行号处理机制&#xff0c;需要处理大量细节&#xff0c;如listview内部用于传递行号的各种消息、通知等、封装的各种读取行号的函数等。 所以在工作量很大&#xff0c;一处纰漏可能导致重大bug的情况下&#xff0c;仅对隐藏行功能进行了简单封装&…

UDP -- 简易聊天室

目录 gitee&#xff08;内有详细代码&#xff09; 图解 MessageRoute.hpp UdpClient.hpp UdpServer.hpp Main.hpp 运行结果&#xff08;本地通信&#xff09; 如何分开对话显示&#xff1f; gitee&#xff08;内有详细代码&#xff09; chat_room zihuixie/Linux_Lear…