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

学习c#的第一天

目录

C# 简介

C# 强大的编程功能

C# 开发环境

.Net 框架(.Net Framework)

C# 的集成开发环境

C# 有用的网站

C# 程序结构


C# 简介

C# 是一种由微软开发的现代、通用的面向对象编程语言,它已经得到了Ecma和ISO的认可。

C#最初是在.NET框架的开发过程中由Anders Hejlsberg及其团队开发的,并专为公共语言基础结构(CLI)而设计。CLI由可执行代码和运行时环境组成,允许使用各种高级语言在不同的计算机平台和体系结构上运行。

C#之所以成为一种广泛应用的专业语言,是因为它具有以下特点:

  • 现代的、通用的编程语言。
  • 面向对象和面向组件:C#支持面向对象编程范式,并且能够轻松地创建和使用组件。
  • 容易学习:相对于其他编程语言,C#具有直观的语法和丰富的标准库,使得学习曲线较为平缓。
  • 结构化语言:C#采用结构化的编程风格,有助于编写清晰、易读的代码。
  • 高效率:借助C#的强大功能和丰富的生态系统,开发者能够编写高效率的程序。
  • 跨平台编译:除了在Windows平台上编译外,C#还可以通过.NET Core和Mono等工具扩展到其他平台上。
  • .NET框架的一部分:作为.NET框架的一部分,C#能够充分利用.NET平台提供的丰富功能和工具。

综上所述,C#以其现代化、通用化、开发效率高等特点,成为了一种得到广泛应用的专业编程语言。

C# 强大的编程功能

虽然 C# 的构想十分接近于传统高级语言 C 和 C++,是一门面向对象的编程语言,但是它与 Java 非常相似,有许多强大的编程功能,因此得到广大程序员的青睐。

下面我将简要地介绍一下这些重要的功能:

  • 布尔条件(Boolean Conditions): C#支持丰富的布尔条件语法,使得开发者能够轻松地进行逻辑判断和流程控制。
  • 自动垃圾回收(Automatic Garbage Collection): C#通过自动垃圾回收机制帮助开发者管理内存,降低了内存泄漏的风险,提高了程序的稳定性和安全性。
  • 标准库(Standard Library): C#拥有.NET Framework提供的丰富标准库,包括各种数据结构、I/O操作、网络通信等功能,方便开发者进行各种类型的应用开发。
  • 组件版本(Assembly Versioning): C#支持对程序集进行版本管理,这对于开发和维护大型项目非常重要。
  • 属性和事件(Properties and Events): C#的属性和事件机制使得开发者能够以一种更加直观和易于理解的方式来管理对象的状态和行为。
  • 委托和事件管理(Delegates and Events Management): 委托和事件机制为C#提供了一种灵活的事件处理模型,支持事件驱动的编程范式。
  • 易于使用的泛型(Generics): C#的泛型特性允许开发者编写出更加通用和类型安全的代码,提高了代码的重用性和可维护性。
  • 索引器(Indexers): 索引器允许开发者以类似数组的方式来访问对象的元素,提供了一种便捷的访问方式。
  • 条件编译(Conditional Compilation): 条件编译允许开发者根据不同的编译条件来选择性地包含或排除代码,适用于处理不同平台或配置的代码需求。
  • 简单的多线程(Multithreading): C#提供了简洁易用的多线程编程支持,使得开发者能够编写出高效的多线程程序。
  • LINQ 和 Lambda 表达式: LINQ和Lambda表达式为C#提供了强大的数据查询和操作能力,使得对集合和数据进行操作变得更加简洁和便利。
  • 集成 Windows: C#与Windows平台深度集成,可以方便地开发各类Windows应用程序,包括桌面应用、服务端应用等。

这些功能使得C#成为一门功能丰富、灵活、易用的编程语言,能够满足各种复杂的软件开发需求。

C# 开发环境

在讨论 C# 程序的开发环境之前,让我们先了解一下 C# 与 .Net 框架之间的关系。

.Net 框架(.Net Framework)

.NET Framework 是一个创新的平台,它为开发人员提供了丰富的功能和工具,使他们能够轻松地开发各种类型的应用程序。我可以进一步解释一下.NET Framework的一些组件:

  • 公共语言运行库(Common Language Runtime - CLR): CLR 是.NET Framework的核心组件之一,它提供了许多重要的功能,包括内存管理、异常处理、线程管理和安全性检查等。CLR 还负责将代码编译成中间语言(IL)并在运行时进行执行。
  • .NET 框架类库(.Net Framework Class Library): .Net Framework Class Library 提供了大量的可重用的类和方法,涵盖了众多领域,包括文件 I/O、网络通信、图形界面、数据库访问等。开发人员可以利用这些类库来加速应用程序的开发过程。
  • 公共语言规范(Common Language Specification)和通用类型系统(Common Type System): 这两个组件定义了.NET Framework支持的多种编程语言之间的交互操作方式和数据类型的共享规范,使得不同语言的开发人员可以在同一个框架下合作开发应用程序。
  • 元数据(Metadata)和组件(Assemblies): 元数据描述了程序集中的类型、成员和特性等信息,而组件则是.NET Framework的基本部署单元。这两个组件为.NET应用程序的构建、部署和维护提供了便利。
  • Windows 窗体(Windows Forms): Windows Forms 提供了创建 Windows 应用程序用户界面的功能,开发人员可以使用它来设计和构建传统的桌面应用程序。
  • ASP.Net 和 ASP.Net AJAX: 这两个组件是用于构建 Web 应用程序的关键工具,ASP.Net 提供了丰富的服务器控件和功能,而 ASP.Net AJAX 则支持在 Web 页面上实现异步 JavaScript 和 XML(AJAX)交互。
  • ADO.Net: ADO.Net 是用于访问和操作数据库的数据访问技术,开发人员可以使用它来连接数据库、执行命令、读取和更新数据等。
  • Windows 工作流基础(Windows Workflow Foundation - WF)、Windows 显示基础(Windows Presentation Foundation - WPF)和 Windows 通信基础(Windows Communication Foundation - WCF): 这些组件为开发人员提供了在.NET应用程序中实现工作流、创建吸引人的用户界面和构建分布式服务的能力。
  • LINQ: 语言集成查询(LINQ)是.NET Framework的一项功能,它允许开发人员使用通用的查询语法对各种数据源进行查询,包括对象集合、数据库和XML文档等。

这些组件构成了.NET Framework的核心部分,使得开发人员能够以更高效、更灵活的方式开发各种类型的应用程序,并实现不同语言之间的互操作。

C# 的集成开发环境

C# 的集成开发环境(Integrated Development Environment,IDE)是用于编写、调试和部署 C# 程序的工具。以下是几个常用且流行的 C# IDE:

  • Visual Studio: Visual Studio 是微软公司推出的集成开发环境,它提供了全面的工具和功能,支持 C#、VB.NET 等多种编程语言。Visual Studio 提供了强大的代码编辑器、调试器、图形界面设计器以及丰富的插件扩展支持,使开发人员可以高效地开发各种类型的应用程序。
  • Visual Studio Code: Visual Studio Code 是微软推出的轻量级、跨平台的代码编辑器,它支持 C# 开发,并且通过插件系统可以扩展为功能强大的集成开发环境。Visual Studio Code 具有丰富的扩展库和社区支持,适合需要灵活配置和定制的开发人员使用。

这些集成开发环境都提供了丰富的功能和工具,使得 C# 的开发工作变得更加高效和便捷。用户可以根据自己的情况和偏好选择合适的工具进行 C# 编程。同时,基本的文本编辑器和命令行编译器也是可以用来进行 C# 编程的,但相比集成开发环境来说,它们可能缺乏一些便利的功能和工具。

C# 有用的网站

  • C# Programming Guide - 介绍了有关关键的 C# 语言特征以及如何通过 .NET 框架访问 C# 的详细信息。
  • Visual Studio - 下载作为 C# 集成开发环境的 Visual Studio 的最新版本。
  • Go Mono - Mono 是一个允许开发人员简单地创建跨平台应用程序的软件平台。
  • C Sharp (programming language) - 维基百科解释 C#(编程语言)。

C# 程序结构

一个典型的C#程序主要包括以下部分:

1、命名空间声明:这是用于组织程序中的类和接口的代码块。命名空间提供了一种避免命名冲突的方式,通过将相关的类、结构、接口、委托和其他相关的类型组织在一起。

2、类声明:在C#中,所有的代码都包含在类中。类是面向对象编程的基础,它包含数据成员(属性)和方法。

3、类方法:类方法定义在类内部,并使用类名后跟括号和方法名来调用。它们通常用于执行特定于类的操作。

4、类属性:属性是类的数据成员,它们存储有关类的信息。属性由访问器(getter和setter)组成,用于获取和设置属性的值。

5、Main 方法:Main方法是程序的入口点,它是程序开始执行的地方。所有的C#程序都必须有一个Main方法。

6、语句和表达式:在C#中,语句和表达式用于执行特定的操作。例如,表达式可以用于计算值,而语句可以用于控制程序的流程。

7、注释:注释是用于解释代码的文本,它不会被编译器编译。C#支持两种类型的注释:单行注释和多行注释。单行注释以“//”开始,而多行注释以“/”开始并以“/”结束。

8、文件后缀:C#源文件的常用文件扩展名是“.cs”。例如,“MyProgram.cs”是一个包含C#源代码的文件。

以下是一个简单的C#代码示例,用于打印“Hello World!”:

using System;  namespace MyProgram  
{  class Program  {  static void Main(string[] args)  {  Console.WriteLine("Hello World!");  }  }  
}

当上面的代码被编译和执行时,它会产生下列结果:

Hello World!

让我们逐步解析上面的C#代码示例:

  1. using System;:这是一个using指令,它告诉编译器我们要使用System命名空间中的类和类型。在这个例子中,我们使用了System命名空间中的Console类。
  2. namespace MyProgram:这是一个命名空间声明,它定义了代码的逻辑范围。在这个例子中,我们定义了一个名为MyProgram的命名空间。
  3. class Program:这是一个类声明,它定义了一个名为Program的类。在这个类中,我们可以定义变量、方法和属性等。
  4. static void Main(string[] args):这是一个特殊的方法,它是程序的入口点。当程序运行时,它从Main方法开始执行。在这个例子中,我们定义了一个名为Main的静态方法,并传递了一个名为args的字符串数组参数。
  5. Console.WriteLine("Hello World!");:这是一个方法调用,它调用了Console类中的WriteLine方法来打印输出。在这个例子中,我们打印了"Hello World!"这个字符串。

综上所述,这个C#代码示例定义了一个名为MyProgram的命名空间,并在其中定义了一个名为Program的类。该类包含一个静态的Main方法,该方法调用Console.WriteLine方法来打印输出。

以下几点值得注意:

  • C# 是大小写敏感的:这意味着在 C# 中,“myVariable”、“myvariable” 和 “MYVARIABLE” 是三个完全不同的变量。同时,方法名、属性名等也是大小写敏感的。
  • 所有的语句和表达式必须以分号(;)结尾:在 C# 中,分号用于表示语句的结束。如果在语句后面没有分号,编译器会报错。
  • 程序的执行从 Main 方法开始:在 C# 中,执行开始于名为 Main 的方法。这是程序的主要入口点。如果你的程序有多个类,并且你想从另一个类开始执行,那么你需要将 Main 方法放在那个类中。
  • 与 Java 不同的是,文件名可以不同于类的名称:在 Java 中,文件名必须与公共类的名称相同。但在 C# 中,这是允许的。例如,你可以有一个名为“MyClass.cs”的文件,其中包含一个名为“MyClass”的类。然而,这并不是一个好的编程实践,因为这可能会造成混淆和错误。通常建议文件名与类名相同。

相关文章:

学习c#的第一天

目录 C# 简介 C# 强大的编程功能 C# 开发环境 .Net 框架(.Net Framework) C# 的集成开发环境 C# 有用的网站 C# 程序结构 C# 简介 C# 是一种由微软开发的现代、通用的面向对象编程语言,它已经得到了Ecma和ISO的认可。 C#最初是在.NE…...

机器学习实战——《跟着迪哥学Python数据分析与机器学习实战》

跟着迪哥学Python数据分析与机器学习实战 一、基础部分二、信用卡欺诈检测实战 —— 监督学习2.1 下采样与过采样2.1.1 过采样数据生成策略SMOTE 2.2 逻辑回归2.3 分类结果混淆矩阵2.4 过采样实战2.5 实战总结2.6 版本依赖排错 三、知识加油站¥银行卡的分类 一、基础…...

开源的全能维护 U 盘工具:Ventoy

开源的全能维护 U 盘工具:Ventoy 本篇文章聊聊迄今为止,我用着最舒服的一款开源 U 盘启动工具,Ventoy。 写在前面 好久不见,接下来计划写一个比较连续的内容,就先从最小的处着手吧。 经过长久的折腾,除…...

Redis7学习笔记01

一百零七、redis高级篇之缓存双写一致性面试题概览...

Redis的持久化机制和配置

Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。 Redis 的持久化机制有两种,第一种是RDB快照,第二…...

【IP固定】地平线开发板如何实现重启IP地址不变

文章目录 1 背景2 临时解决方案3 真正解决方案 1 背景 重新刷了地平线工具链OE包中BSP20230417的系统镜像,结果只能串口连接,无法实现网口连接,串口连接后,发现eth0和eth1的IP竟然是一样的,如下图所示 还挺少见的。 …...

CHATGPT----自然辩证法分析

CHATGPT----自然辩证法的要素,结构与功能 Chatgpt的要素组成: ChatGPT的构成主要包括语言模型、对话管理、知识库和用户接口等几个方面。 语言模型:ChatGPT的核心是语言模型,它是一种基于深度学习技术的自然语言处理模型&#…...

Python测试框架之pytest快速入门

pytest是一种流行的Python测试框架,支持创建简单的单元测试,也支持创建复杂的功能和集成测试。它提供了一系列有用的功能,能够方便地编写,组织和运行测试用例,并生成丰富的测试报告。 pytest的主要特点包括&#xff1…...

CSS 动画特效运用目录

主要是记录动画相关的特效实践案例和实现思路。 章节名称完成度难度文章地址完整代码下载地址拟态时钟动画完成一般文章地址完整代码下载...

css文本溢出省略号点点点

多行两端对齐省略号 .box {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3; // 限制显示的行数,单行就改成1 }...

MSSQL 配置ORACLE ​链接服务器

在有些场景,我们需要整合其他异构数据库的数据。我们可以使用代码去读取,经过处理后,再将数据保存到MSSQL数据库中。如果数据量比较大,但处理的逻辑并不复杂的情况下,这种方式就不是最好的办法。这时可以使用使用链接服…...

HiSilicon352 android9.0 适配红外遥控器

海思Android解决方案在原生Android基础上,基于传统电视用户使用习惯,增加了对红外遥控器和按键板的支持,使传统电视用户能更好适应智能电视方案。 一.功能描述: 在系统启动时,会先启动android_ir_user;vinp…...

0004Java安卓程序设计-springboot基于APP的鲜花商城

文章目录 **摘 要****目录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘 要 本毕业设计的内容是设计并且实现一个基于APP的鲜花商城。它是在Windows下,以MYSQL为数据库开发平台,java技术和…...

对Axios进行封装

封装的同时,你需要和 后端协商好一些约定,请求头,状态码,请求超时时间....... 设置接口请求前缀:根据开发、测试、生产环境的不同,前缀需要加以区分 请求头 : 来实现一些具体的业务,必须携带一…...

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块,不可以随意更改每行前面的空白,否则程序会运行错误!!!如果缩进不…...

Ubuntu22.04安装MySql

在Ubuntu上安装mysql就比较简单了 1、常规操作,更新软件包列表 apt update 至少安装之前看一眼版本吧 apt list mysql-server 嗯,是8.0.35版本的 2、安装mysql apt install mysql-server 3、给root用户设置密码 # 第一次安装完无需密码,让你输入…...

设计模式-桥接模式(Bridge)

设计模式-桥接模式(Bridge) 一、桥接模式概述1.1 什么是桥接模式1.2 简单实现桥接模式 二、使用桥接模式注意事项三、实现桥接模式的方式3.1 使用继承和组合的方式实现桥接模式3.2 使用接口和内部类的方式实现桥接模式 一、桥接模式概述 1.1 什么是桥接…...

库存预占架构升级方案设计-交易库存中心

背景介绍  伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。近三年数据可以看出:  接入商家同比增长37.64%、货…...

【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案

目录 一、整合redis 1、介绍 1.1、redis(Remote Dictionary Server) 1.2、MySQL 1.3、区别 2、整合 2.1、配置 2.2、文件配置 2.3、key的生成规则方法 2.4、注意 二、redis注解式缓存 1、Cacheable注解 2、CachePut注解 3、CacheEvict注解…...

chatGPT对英语论文怎么润色呢?

chatGPT对英语论文怎么润色呢? 回答1: 润色英语论文是一项重要的任务,它有助于提高论文的质量、语法准确性和清晰度。以下是一些关于如何润色英语论文的建议: 语法和拼写检查: 使用拼写和语法检查工具,如…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...