以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); // 10
    Console.WriteLine(MyClass.b++); // 20
    Console.WriteLine(MyClass.b); // 21
}

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

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

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

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

相关文章

面试题:并发与并行的区别?

并发(Concurrency)和并行(Parallelism)是计算机科学中两个相关但不同的概念,它们都涉及到同时处理多个任务,但在实现方式和效果上有显著的区别。理解这两者的区别对于编写高效的多任务程序非常重要。 并发&…

面向对象分析和设计OOA/D,UML,GRASP

目录 什么是分析和设计? 什么是面向对象的分析和设计? 迭代开发 UML 用例图 交互图 基于职责驱动设计 GRASP 常见设计原则 什么是分析和设计? 分析,强调是对问题和需求的调查研究,不是解决方案。例如&#x…

MySQL使用navicat新增触发器

找到要新增触发器的表,然后点击设计,找到触发器标签。 根据实际需要,填写相关内容,操作完毕,点击保存按钮。 在右侧的预览界面,可以看到新生成的触发器脚本

Anthropic 的人工智能 Claude 表现优于 ChatGPT

在人工智能领域,竞争一直激烈,尤其是在自然语言处理(NLP)技术的发展中,多个公司都在争夺市场的主导地位。OpenAI的ChatGPT和Anthropic的Claude是目前最具影响力的两款对话型AI产品,它们都能够理解并生成自然…

《罪恶装备-奋战》官方中文学习版

《罪恶装备 -奋战-》是Arc System Works开发的格斗游戏《罪恶装备》系列的第二十五部作品 [1],男主角索尔历时25年的故事就此画上句号,而罪恶装备的故事却并未结束。 《罪恶装备-奋战》官方中文版 https://pan.xunlei.com/s/VODWAm1Dv-ZWVvvmUMflgbbxA1…

期末概率论总结提纲(仅适用于本校,看文中说明)

文章目录 说明A选择题1.硬币2.两个事件的关系 与或非3.概率和为14.概率密度 均匀分布5.联合分布率求未知参数6.联合分布率求未知参数7.什么是统计量(记忆即可)8.矩估计量9.117页12题10.显著水平阿尔法(背公式就完了) 判断题11.事件…

流程图(四)利用python绘制漏斗图

流程图(四)利用python绘制漏斗图 漏斗图(Funnel Chart)简介 漏斗图经常用于展示生产经营各环节的关键数值变化,以较高的头部开始,较低的底部结束,可视化呈现各环节的转化效率与变动大小。一般重…

继承(5)

大家好,今天我们继续来学习继承的相关知识,来看看子类构造方法(也叫做构造器)是如何做的。 1.6 子类构造方法 父子父子,先有父再有子,即:子类对象构选时,需要先调用基类构造方法,然后执行子类的构造方法 ★此时虽然执行了父类的…

Vue框架主要用来做什么?Vue框架的好处和特性.

在快速发展的互联网时代,前端开发技术的变革日新月异,为开发者带来了前所未有的机遇与挑战。Vue.js,作为前端开发领域的一颗璀璨新星,以其轻量级、高效灵活的特性,赢得了广大开发者的青睐。本文将深入探讨Vue框架的主要…

搭建Hadoop分布式集群

软件和操作系统版本 Hadoop框架是采用Java语言编写,需要java环境(jvm) JDK版本:JDK8版本 ,本次使用的是 Java: jdk-8u431-linux-x64.tar.gz Hadoop: hadoop-3.3.6.tar.gz 三台Linux虚拟节点: CentOS-7-x86_64-DVD-2…

电子应用设计方案87:智能AI收纳箱系统设计

智能 AI 收纳箱系统设计 一、引言 智能 AI 收纳箱系统旨在为用户提供更高效、便捷和智能的物品收纳与管理解决方案,通过融合人工智能技术和创新设计,提升用户的生活品质和物品整理效率。 二、系统概述 1. 系统目标 - 实现物品的自动分类和整理&#xf…

MySQL数据结构选择

系列文章目录 一、MySQL数据结构选择 二、MySQL性能优化explain关键字详解 三、MySQL索引优化 文章目录 系列文章目录前言一、索引1.1、什么是索引1.2、构建索引的过程1.3、索引的更新和维护1.4、索引的查询和管理1.5、InnoDB 和 MyISAM 的索引实现1.6、联合索引和最左前缀法则…

shell基础使用及vim的常用快捷键

一、shell简介 参考博文1 参考博文2——shell语法及应用 参考博文3——vi的使用 在linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是 / b in/ b a s h ,流行的shell…

(leetcode算法题)76. 最小覆盖子串

以s "ADOBECODEBANC", t "ABC"为例,进行如下演示 对于上图的说明: 1. 上面八个状态是在从左往右滑动窗口时,每发现一个窗口满足以下条件就进行状态暂停 条件:s[l, r] 覆盖了 t 这个字符串 2. 只有出窗口之…

二、BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket? Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口,一般由操作 系统提供。客户端连接上一个服务端,就会在客户端中产生一个 socket 接口实例,服务端每接受 一个客户端…

HDFS架构原理

一、HDFS架构整体概述 HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统。HDFS是Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。HDFS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件…

Qt项目打包成绿色软件

Qt项目打包成绿色软件 一、图标添加与配置二、编译后打包文件附录有朋友将程序发给别人后运行,发现各种问题,如: 1.无法定位程序输入点__cxa_thread_atexit于动态链接库…。 2.缺少各种**.dll文件。 问‌我运行环境上Microsoft Visual C++ Redistributable运行环境都有,版本…

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具,故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著;出版时间:2023年3月 二、图像的分类、分割与检测任务区别 如图所示,这些更高阶的…

C# 之某度协议登录,JS逆向,手机号绑定,获取CK

.NET兼职社区 .NET兼职社区 .NET兼职社区 .NET兼职社区 有需要指导,请私信我留言V或者去社区找客服。

数值分析速成复习笔记

请确保你有10hour的有效学习时间,保你拿90 证明部分 编程部分