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

C# 简介以及与C、C++的区别

C#(发音为“C Sharp”)是一种由微软公司开发的面向对象的、类型安全的编程语言,是.NET框架的主要编程语言‌。C#最初是为了与Java竞争而设计的,因此在语法和设计原则上有许多相似之处。‌

起源与发展

C#诞生于2000年左右,旨在构建.NET平台生态系统,整合多种编程语言的优点,提供高效、安全的开发工具。随着时间推移,C#不断演进,从最初的版本逐步发展到高版本,增加了如异步编程、LINQ等高级特性,以适应不断变化的技术需求和编程范式的转变。

设计目标与特性

C#的设计目标是成为一种简单、现代、通用、面向对象的编程语言,支持强类型检查、数组边界检查、未初始化变量检测和自动垃圾回收。其主要特性包括:

  • 简单性‌:去除了C和C++中的复杂特性,如宏和多重继承。
  • ‌类型安全‌:每个变量和对象必须声明类型,避免了指针操作的不安全性。
  • ‌面向对象‌:支持封装、继承和多态。
  • ‌现代性‌:包含泛型、Lambda表达式等现代语言特性。
  • ‌兼容性‌:支持COM和基于Windows的应用程序。

应用领域

C#广泛应用于多个领域,包括:

  • ‌‌桌面应用程序开发‌:使用Windows Presentation Foundation(WPF)或Windows Forms,可以开发功能丰富的桌面应用程序‌。
    ‌* ‌Web应用程序开发‌:支持大多数We.b标准,如HTML、XML、SOAP等。
  • ‌‌移动应用程序开发‌:通过Xamarin支持跨平台移动应用开发。
  • ‌‌游戏开发‌:适用于Unity游戏引擎的开发。
  • ‌‌云和服务开发‌:支持Azure等云服务开发。
  • ‌‌数据库开发‌:用于SQL Server等数据库的应用程序开发。
  • ‌‌科学计算‌:适用于复杂的科学计算任务。
  • ‌‌物联网(IoT)应用程序‌:支持物联网设备的开发和部署。
  • ‌‌人工智能(AI)应用程序‌:用于机器学习和数据分析。

C与C++的区别

  • C 语言是面向过程的,而 C++ 是面向对象的。

  • C 语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而 C++ 对于大多数的函数都是有集成的很紧密,特别是 C 语言中没有的 C++ 中的 API 是对 Window 系统的大多数 API 有机的组合,是一个集体。但你也可能单独调用 API。

  • 特别是 C++ 中的图形处理,它和语言的图形有很大的区别。C 语言中的图形处理函数基本上是不能用在中 C++ 中的。C 语言标准中不包括图形处理。

  • C 和 C++ 中结构体:C的结构体内不允许有函数,而C++的结构体内部允许有成员函数(允许有构造函数、析构函数和this指针),且允许这个函数是虚函数;C的结构体对内部成员变量的访问权限只能是public,而C++允许public,private,protected三种;C的结构体是不可以继承的,C++的结构体是允许从其他结构体或者类继承的;

  • C 语言可以写很多方面的程序,但是 C++ 可以写得更多更好,写 DLL,写控件,写系统。

  • C 语言对程序的文件的组织是松散的,几乎是全要程序处理;而 C++ 对文件的组织是以工程,各文件分类明确。

  • C++ 中的 IDE 很智能,和 VB 一样,有的功能可能比VB还强。

  • C++ 对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入 MFC 中的类的时候,加入变量的时候等等。

  • C++ 中的附加工具也有很多,可以进行系统的分析,可以查看 API;可以查看控件。

  • 调试功能强大,并且方法多样。

C# 语言与 C++ 的区别:

  • C# 与 C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 是既面向过程又面向对象的语言,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进

  • C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

  • 面向对象主要是说,在系统设计和实现上用的思想,面向对象的思想的运用,就是先从系统需求中确定类,然后按类实例化对象,对象之间的通信就实现了系统的功能。

  • 面向过程,即系统的实现是分过很多按流程或工序设计的不同功能(函数)来实现,就是先干什么,后干什么,主要是靠函数的调用,因为面向过程没有对象,所以这些函数不属于任何对象,没有封装、继承等的灵活运用,系统一旦庞大,其设计和实现的复杂性和可控性跟面向对象不是一个数量级的。)

  • C#不支持多重继承,这是与C++明显区别的地方.

  • 在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。

  • C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。

  • 在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。

  • C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!

  • C#会禁止所有switch…case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。

  • 在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。

  • C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。

  • C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器

功欲善其事,必善其器 接下来 开发利器Visual Studio下载和安装超简单

相关文章:

C# 简介以及与C、C++的区别

C#(发音为“C Sharp”)是一种由微软公司开发的面向对象的、类型安全的编程语言,是.NET框架的主要编程语言‌。C#最初是为了与Java竞争而设计的,因此在语法和设计原则上有许多相似之处。‌ 起源与发展 C#诞生于2000年左右&#x…...

学习使用ESP8266进行MQTT通信并在网页上可视化显示

目录 一、工具 二、 流程 三、代码实现 设置MQTT服务器地址 设置服务器和端口号 连接MQTT服务器并订阅话题 回调处理函数 发布数据到话题 四、调试软件使用 打开MQTTx 添加话题 五、网页使用 一、工具 arduino ide esp8266/32单片机 lot物联网网页 MQTTx软件或者m…...

mysql进阶(三)

MySQL架构和存储引擎 1. MySQL架构 MySQL8.0服务器是由连接池、服务管理⼯具和公共组件、NoSQL接⼝、SQL接⼝、解析器、优化 器、缓存、存储引擎、⽂件系统组成。MySQL还为各种编程语⾔提供了⼀套⽤于外部程序访问服务器 的连接器。整体架构图如下所⽰: 2. 连接层 …...

硬件抽象层(HAL)

硬件抽象层(HAL):应用开发的得力助手 硬件抽象层(HAL)的核心作用是为应用提供访问硬件的接口,同时屏蔽硬件细节,让开发者专注于应用开发,无需深入了解硬件底层的复杂操作。 1. HAL…...

【MYSQL数据库异常处理】执行SQL语句报超时异常

MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…...

深入理解三色标记、CMS、G1垃圾回收器

三色标记算法 简介 三色标记算法是一种常见的垃圾收集的标记算法,属于根可达算法的一个分支,垃圾收集器CMS,G1在标记垃圾过程中就使用该算法 三色标记法(Tri-color Marking)是垃圾回收中用于并发标记存活对象的核心算…...

60页PDF | 四川电信数据湖及数据中台实施方案!(附下载)

一、前言 这份报告是关于四川电信数据湖与数据中台实施方案的详细规划。报告从数据驱动、事件管理、数据湖构建、数据资产管理和数据治理等多个方面展开,介绍了如何通过数据湖与数据中台的建设,实现数据的高效采集、存储、分析与共享,提升数…...

短分享-Flink图构建

一、背景 通过简单的书写map、union、keyby等代码,Flink便能构建起一个庞大的分布式计算任务,Flink如何实现的这个酷炫功能呢?我们本次分享Flink做的第一步,将代码解析构建成图 源码基于Flink 2.10,书籍参考《Flink核…...

java常见的几种并发安全问题及解决方案

项目场景: 并发的应用场景,在开发过程会经常遇到。 例如:服务应用启动后,需要简单统计接口的总访问量;实时更新订单状态,成交总额。 问题描述: 比如统计接口访问次数,如下的实现&a…...

【mysql系】mysql启动异常Can‘t create test file localhost.lower-test

1.查看通过下面命令获取对应mysql配置文件 whereis my.cnf 2.查看日志文件 下面这里是对应的错误日志 2025-03-03T06:33:56.402057Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see …...

Docker save命令怎么用

docker save 命令用于将一个 Docker 镜像保存为一个 tar 文件。这在将镜像传输到其他系统或进行备份时非常有用。通过此命令&#xff0c;你可以将镜像导出到本地存储设备或传输给其他人。 基本语法 docker save -o <保存文件路径> <镜像名>:<标签>-o <保…...

物联网的隧道监测场景中,要实现全面且有效的监测

在物联网的隧道监测场景中&#xff0c;要实现全面且有效的监测&#xff0c;需要从传感器选型、数据采集与传输、数据分析模型构建等多个关键环节进行考量。以下是详细的实现方案&#xff1a; 1. 传感器选型 结构安全监测 应变计&#xff1a;用于测量隧道结构表面的应变情况&…...

如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能

作者&#xff1a;来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中&#xff0c;通过使用 LLM 生成的词汇&#xff0c;为搜索应用增强自动补全功能&#xff0c;实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能&#xff0c;它通过在用户输入时实…...

安全见闻之网络安全新兴术语

在计算机和网络安全领域&#xff0c;随着技术的不断创新与发展&#xff0c;许多新兴的术语和缩写逐渐出现。这些新词汇不仅代表了技术进步&#xff0c;也反映了网络安全应对复杂攻击和防护需求变化的趋势。尤其是在当前网络环境中&#xff0c;由于攻击手段的不断演变&#xff0…...

vscode离线配置远程服务器

目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器&#xff0c;并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port&#xff08;vscode报错解决方法&#xff09;-C…...

JVM常用概念之对象初始化的成本

在JVM常用概念之新对象实例化博客中我讲到了对象的实例化&#xff0c;主要包含分配&#xff08;TLAB&#xff09;、系统初始化、用户初始化&#xff0c;而我在JVM常用概念之线程本地分配缓冲区&#xff08;ThreadLocal Allocation Buffer&#xff0c;TLAB&#xff09;博客中也讲…...

MinIO 容器化快速部署指南

MinIO 容器化快速部署指南 一、快速开始 # 创建网络&#xff08;需提前执行&#xff09; docker network create srebro#创建工作目录 mkdir -p /home/application/Middleware/minio/# 启动服务 docker-compose up -d二、配置说明 docker-compose.yaml 结构 services:minio…...

历年杭州电子科技大学计算机考研复试上机真题

历年杭州电子科技大学计算机考研复试机试真题 在线评测&#xff1a;https://app2098.acapp.acwing.com.cn/ 最大公约数和最小公倍数 题目描述 输入两个正整数 m 和 n&#xff0c;求其最大公约数和最小公倍数。 输入格式 两个整数 输出格式 最大公约数&#xff0c;最小公…...

K8S学习之基础十四:k8s中Deployment控制器概述

Deployment控制器概述&#xff1a; Deployment控制器是k8s中最常用的资源对象&#xff0c;为Replicaset和Pod创建提供了一种声明式的定义方法&#xff0c;在Deployment对象中描述一个期望的状态&#xff0c;Deployment控制器就会按照一定的控制速率把实际状态改成期望状态&…...

django中视图作用和视图功能 以及用法

在 Django REST Framework(DRF)中,视图(View)是处理 HTTP 请求并返回响应的核心组件。DRF 提供了多种视图类,适用于不同的场景和需求。以下是 DRF 中常见的视图类及其作用、使用方法的详细说明: 一、DRF 视图的分类 DRF 的视图可以分为以下几类: 基于函数的视图(Func…...

React Native v0.78 更新

这个版本在 React Native 中引入了 React 19&#xff0c;并带来了一些重要的新功能&#xff0c;例如 Android 矢量图&#xff08;Vector Drawables&#xff09;的原生支持 以及 iOS 更好的 Brownfield 集成。 亮点 React 19 集成更小更快的发布节奏可选择在 Metro 中启用 Jav…...

记录Linux安装mysql8

1.mysql8安装 ​​​​​​​yum安装mysql8.0版本_yum 安装mysql8-CSDN博客文章浏览阅读833次&#xff0c;点赞10次&#xff0c;收藏9次。yum安装mysql8.0版本,如果系统中已经安装了旧版本的 MySQL 或者 mariadb&#xff0c;需要先卸载._yum 安装mysql8https://blog.csdn.net/…...

采用OllamaSharp实现.NET快速对接deepseek实现聊天、模型管理、流式响应等功能

1. OllamaSharp 是什么&#xff1f; OllamaSharp 是一个用于在 .NET 环境中与 Ollama API 交互的库。它提供了对 Ollama API 端点的全面支持&#xff0c;包括聊天、模型管理、流式响应等功能&#xff0c;适合需要与 Ollama 服务进行交互的 .NET 开发者。 2. 安装 OllamaSharp…...

CodeBlocks个性化竞赛配置

文章目录 1. 主题设置2. 设置默认代码3. 比赛时的使用 1. 主题设置 参考博客 --> codeblocks更改主题颜色及调试 跟随当前教程配置主题 博主使用的主题为son of obsidian&#xff0c;此主题为黑色背景&#xff0c;按照上边参考博文修改一下光标颜色即可。 效果图&#xff1…...

如何用单机版deepseek编写示例

以下是一个简单的 DeepSeek 编程示例&#xff0c;通过 API 调用实现智能对话功能&#xff1a;文末有链接 一、环境准备 pip install requests # 安装 HTTP 请求库‌:ml-citation{ref"2" data"citationList"} 二、代码实现 import requests def chat_wi…...

python实现的可爱卸载动画

在逛掘金时&#xff0c;掘金用户在B站看到的灵感进行的一个卸载窗口的动画效果的实用案例。人类是一种不断在学习的动物&#xff0c;并且是一种模仿能力学习能里比较强的动物。我这里是第三波的学习实践者咯&#xff01; 相对VUE构建动画效果窗口&#xff0c;我更加喜欢用pytho…...

钣金加工行业数字化转型MES方案

一、 行业痛点&#xff1a;钣金加工行业普遍面临以下挑战&#xff1a; 订单多样化、小批量、定制化需求增多&#xff1a;传统生产模式难以适应快速变化的市场需求。 生产流程复杂、工序繁多&#xff1a;涉及切割、折弯、焊接、表面处理等多个环节&#xff0c;协同效率低。 生产…...

pinginfoview网络诊断工具中文版

介绍 pinginfoview中文版本是一款实用的网络诊断工具&#xff0c;它专为中文用户设计&#xff0c;提供了方便易用的界面&#xff0c;使得在Windows环境下进行ping测试变得更加简单。该工具是由NirSoft开发的一款免费的桌面应用程序&#xff0c;尽管官方可能并未正式发布中文版…...

关于服务器无法下载kcv_encoder.h5权重的解决方法

最近租服务器跑实验代码&#xff0c;在模型初次加载时会下载stable diffusion的一系列预训练权重&#xff0c;但服务器一直卡在 Downloading data from https://huggingface.co/fchollet/stable-diffusion/resolve/main/kcv_encoder.h5 &#xff0c;最后报错 File /usr/local/…...

计算光学成像与光学计算概论

计算光学成像所涉及研究的内容非常广泛&#xff0c;虽然计算光学成像的研究内容是发散的&#xff0c;但目的都是一致的&#xff1a;如何让相机记录到客观实物更丰富的信息&#xff0c;延伸并扩展人眼的视觉感知。总的来说&#xff0c;计算光学成像现阶段已经取得了很多令人振奋…...