C#命名空间基础及案例

目录

  • C#与C、C++的区别
    • 设计和用途:
    • 语法和特性:
    • 内存管理:
    • 跨平台性:
  • using
  • namespace
  • 变量声明
    • 常量
    • double双精度浮点数类型
    • 字符串
    • double列表
  • 路径相关
    • System.IO.File.Exists()
    • Path.GetFullPath()
    • File.Delete()
  • 文件存读取
    • new FileStream()
    • StreamWriter sw = new StreamWriter(fs);
    • StreamReader sr1 = new StreamReader(txtFile);

C#与C、C++的区别

C#、C 和 C++ 是三种不同的编程语言,它们各自有不同的设计理念、语法特点和用途。下面是它们之间的一些主要区别:

设计和用途:

  • C#(C Sharp) 是一种面向对象的编程语言,由微软公司开发,旨在为 .NET 平台提供一种简单、现代、安全和高效的编程语言。C# 主要用于开发 Windows 应用程序、Web 应用程序、桌面应用程序、游戏开发等。
  • C 是一种过程化编程语言,具有简洁的语法和强大的系统编程功能。C 语言是 UNIX 操作系统的基础,也被广泛应用于操作系统、嵌入式系统、系统编程等领域。
  • C++ 是 C 语言的扩展,添加了面向对象编程(OOP)和泛型编程的特性。C++ 语言支持高效的系统编程、游戏开发、图形界面应用程序开发等。它是一种多范式编程语言,既支持面向对象编程,也支持过程化编程和泛型编程。

语法和特性:

  • C# 具有现代化的语法特性,支持面向对象编程、泛型编程、异步编程等。它提供了自动垃圾回收、类型安全、属性和事件等高级特性。
  • C 是一种较为底层的语言,语法相对简洁,没有面向对象编程的特性。C 语言更加注重对硬件的直接控制和效率的优化。
  • C++ 继承了 C 语言的特性,并添加了面向对象编程的支持。C++ 语言具有更加复杂和丰富的语法,支持多重继承、模板元编程等高级特性。

内存管理:

  • C# 使用自动垃圾回收(Garbage Collection)来管理内存,开发者不需要手动释放内存,这降低了内存泄漏的风险,但可能会带来一定的性能开销。
  • C 和 C++ 不具备自动垃圾回收功能,开发者需要手动管理内存,包括内存分配和释放。这提供了更大的灵活性和控制性,但也容易引入内存泄漏和内存错误。

跨平台性:

  • C# 通常与 .NET Framework 或 .NET Core 一起使用,这些框架在 Windows 平台上具有良好的支持,但在其他平台上的支持程度有限。
  • C 和 C++ 是跨平台的语言,可以在各种操作系统上进行开发和部署,这使得它们更适合系统级开发和移植性要求较高的应用程序。

using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

这段代码是用于在 C# 程序中导入必要的命名空间,以便进行文件和集合操作。下面是对每个命名空间的简要解释:

  • System:该命名空间提供了定义了常用值类型和引用类型、事件和事件处理程序、接口、属性以及处理异常的基本类和基类。它是.NET Framework中的核心命名空间。

  • System.Collections.Generic:该命名空间包含了定义泛型集合的接口和类。泛型集合允许用户创建强类型化的集合,提供了比非泛型集合更好的类型安全性和性能。

  • System.Linq:该命名空间提供了支持使用 Language-Integrated Query (LINQ) 的查询的类和接口。LINQ 使您能够以类型安全的方式查询集合,而不必知道特定数据结构或实现语言。

  • System.Text:该命名空间包含了表示 ASCII 和 Unicode 字符编码的类,用于将字符块与字节块相互转换的抽象基类,以及一个辅助类,用于在不创建 String 中间实例的情况下操作和格式化 String 对象。

  • System.IO:该命名空间提供了用于读取和写入文件和数据流的类,以及提供基本文件和目录支持的类。

这些命名空间是进行各种文件操作、如读取和写入文件、处理集合以及操作字符串的基础组件。它们为在 C# 中开发应用程序提供了基本构建块。

namespace

namespace WaterCloudModel 声明了一个命名空间,命名空间用于在 C# 程序中组织和管理相关的类、结构、接口和其他成员。在这种情况下,命名空间名为 WaterCloudModel。

命名空间的使用有助于组织和管理大型项目中的代码,并避免命名冲突。通过将相关的类和结构放在同一个命名空间下,可以提高代码的可维护性和可读性,并使代码更易于理解和重用。

在这个命名空间中,你可以定义与水云模型相关的各种类、结构、接口和其他成员,以及相关的函数和方法。

变量声明

常量

Math.PI

Math.PI 是 C# 中的一个常量,表示数学常数 π(pi),即圆周率。在 C# 中,Math 是一个类,包含了各种数学函数和常量。PI 是 Math 类中的一个静态属性,用于表示 π 的近似值,其值约为 3.141592653589793。在进行与圆、弧度和角度相关的计算时,常常会用到这个常量。

double双精度浮点数类型

double backScaVeg = 0;

这段代码定义了一个名为 backScaVeg 的变量,其类型为 double,并将其初始化为 0。在 C# 中,double 是一种双精度浮点数类型,用于存储双精度浮点数值(即带有小数点的数值)。

字符串

string txtFile = @"D:\C#\WaterCloudModel\c5.txt";

这段代码定义了一个名为 txtFile 的变量,其类型为 string,并初始化为一个包含文件路径的字符串。在这个例子中,文件路径指向本地磁盘上的一个文本文件。

@“…” 表示使用原始字符串字面量,即在字符串中可以直接包含转义字符而不会被解释。
“D:\C#\WaterCloudModel\c5.txt” 是一个文件路径字符串,指定了文件所在的位置。在这里,文件名为 c5.txt,位于 D:\C#\WaterCloudModel\ 目录下。

double列表

List<double> backScaCanList = new List<double>();

这段代码创建了一个名为 backScaCanList 的列表,其元素类型为 double,用于存储双精度浮点数值。以下是代码的解释:

List 是一个泛型集合类型,表示一个包含 double 类型元素的列表。
backScaCanList 是列表的名称,你可以根据需要给它取一个更有意义的名称。
new List() 是使用 new 关键字创建了一个 List 类型的新实例,表示一个空的列表。
通过这行代码,你创建了一个空的双精度浮点数值列表,可以向其中添加 double 类型的数据。这种列表在 C# 中常用于存储和操作一系列数字值。

路径相关

System.IO.File.Exists()

System.IO.File.Exists 是一个静态方法,用于检查指定路径的文件是否存在。这个方法属于 System.IO 命名空间,用于文件和目录操作。以下是该方法的使用方式:

using System;
using System.IO;class Program
{static void Main(){string filePath = @"D:\C#\WaterCloudModel\c5.txt";if (File.Exists(filePath)){Console.WriteLine("文件存在。");}else{Console.WriteLine("文件不存在。");}}
}

在上面的示例中,File.Exists 方法接收一个字符串参数,即文件路径,然后返回一个布尔值,表示文件是否存在。如果文件存在,则返回 true,否则返回 false。通过条件判断语句,可以根据文件存在与否进行不同的处理。

Path.GetFullPath()

Path.GetFullPath 是一个静态方法,用于获取指定路径的绝对路径。这个方法属于 System.IO 命名空间,用于文件和目录操作。以下是该方法的使用方式:

using System;
using System.IO;class Program
{static void Main(){string relativePath = @"..\folder\file.txt";string fullPath = Path.GetFullPath(relativePath);Console.WriteLine(fullPath);}
}

在上面的示例中,Path.GetFullPath 方法接收一个字符串参数,即相对路径,然后返回一个字符串,表示该相对路径的绝对路径。绝对路径是相对于根文件夹的完整路径。在示例中,如果当前工作目录为 D:\C#\WaterCloudModel,则 …\folder\file.txt 的绝对路径可能是 D:\C#\folder\file.txt。

File.Delete()

using System;
using System.IO;class Program
{static void Main(){string filePath = @"D:\C#\WaterCloudModel\c5.txt";try{if (File.Exists(filePath)){File.Delete(filePath);Console.WriteLine("文件删除成功。");}else{Console.WriteLine("文件不存在,无法删除。");}}catch (Exception ex){Console.WriteLine("删除文件时出现错误:" + ex.Message);}}
}

File.Delete 是一个静态方法,用于删除指定路径的文件。这个方法属于 System.IO 命名空间,用于文件和目录操作。以下是该方法的使用方式:

文件存读取

new FileStream()

FileStream fs = new FileStream(writeTxt, FileMode.Create);

这段代码创建了一个名为 fs 的 FileStream 对象,用于操作一个文件。以下是代码的解释:

FileStream 是 C# 中用于文件操作的类,它提供了一种将文件视为字节流的方法,可以用于读取和写入文件数据。
fs 是 FileStream 对象的名称,你可以根据需要给它取一个更有意义的名称。
writeTxt 是一个字符串变量,包含了文件的路径和名称,表示将要被操作的文件。
FileMode.Create 是一个枚举值,表示创建一个新的文件。如果文件已经存在,则会被覆盖。
通过这行代码,你创建了一个用于写入数据的 FileStream 对象,并指定了将要写入的文件。接下来,你可以使用 fs 对象进行文件的写入操作。

StreamWriter sw = new StreamWriter(fs);

这段代码创建了一个名为 sw 的 StreamWriter 对象,用于向文件流 fs 中写入数据。以下是代码的解释:

StreamWriter 是 C# 中用于文本写入的类,它提供了一种将文本数据写入到流中的方法。
sw 是 StreamWriter 对象的名称,你可以根据需要给它取一个更有意义的名称。
fs 是之前创建的 FileStream 对象,用于操作文件。
通过这行代码,你创建了一个 StreamWriter 对象,它将数据写入到之前创建的文件流中。接下来,你可以使用 sw 对象向文件中写入数据。

StreamReader sr1 = new StreamReader(txtFile);

这段代码创建了一个名为 sr1 的 StreamReader 对象,用于从文件 txtFile 中读取数据。以下是代码的解释:

StreamReader 是 C# 中用于文本读取的类,它提供了一种从流中读取文本数据的方法。
sr1 是 StreamReader 对象的名称,你可以根据需要给它取一个更有意义的名称。
txtFile 是一个字符串变量,包含了要被读取的文件的路径和名称。
通过这行代码,你创建了一个 StreamReader 对象,它将从指定文件中读取数据。接下来,你可以使用 sr1 对象从文件中读取文本数据。

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

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

相关文章

VsCode免密登录

创建本地密匙 按下WinR输入cmd&#xff0c;输入 ssh-keygen -t rsa然后连续回车直到结束 找到Your public key has been saved in C:\Users\Administrator/.ssh/id_rsa.pub&#xff0c;每个人都不一样找到密匙所在地 打开id_rsa.pub这个文件&#xff0c;可以用记事本打开&am…

ROS 语音交互(三) tts

目录 一、模型选择 二、流程 三、核心代码展示 一、模型选择 科大讯飞超拟人识别 二、流程 超拟⼈合成协议 | 讯飞开放平台文档中心 (xfyun.cn) 三、核心代码展示 # coding: utf-8 import _thread as thread import os import time import base64import base64 import …

【C++】STL--String

这一节主要总结string类的常见接口&#xff0c;以及完成了string类的模拟实现。 目录 标准库的String类 string类常见接口 string类对象的常见构造 string析构函数&#xff1a;~string string类对象的容量操作 string类对象的访问及遍历操作 string类对象的修改操作 s…

ROS2+NAV2中常用的指令

1.查看存在的topic: ros2 topic list 2.输出某个topic的信息: ros2 topic echo [topic_name] #example: ros2 topic echo /gps/fix 3.查看存在的node: ros2 node list 4.查看某个node的信息: ros2 node in…

ASM实例

ASM实例是Oracle自动存储管理&#xff08;Automatic Storage Management&#xff0c;简称ASM&#xff09;的进程和内存组件的组合。每次启动ASM或数据库时&#xff0c;都会分配名为系统全局区&#xff08;SGA&#xff09;的共享内存区域并启动Oracle ASM或数据库后台进程。后台…

NAS网络存储的简单了解

一、概述 NAS网络存储&#xff0c;即网络附加存储&#xff08;Network Attached Storage&#xff09;&#xff0c;是一种具有很大存储容量的电脑外敷设备&#xff0c;它通过网络直接连接到交换机上。NAS的主要功能是为网络区域存储&#xff08;或磁盘&#xff09;的用户提供数据…

二、TensorFlow结构分析(5)案例

案例&#xff1a; minimize(error) 代码&#xff1a; def linear_regression():# 自实现线性回归# 1&#xff09;准备数据X tf.random.normal(shape[100,1])y_true tf.matmul(X,[[0.8]]) 0.7# 2&#xff09;构造模型# 定义模型参数 用 变量weights tf.Variable(initial_v…

聚观早报 | 比亚迪e2荣耀版上市;华为享界S9正式亮相

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月14日消息 比亚迪e2荣耀版上市 华为享界S9正式亮相 理想汽车L系列改名 极氪全新纯电MPV车型曝光 vivo X100S外…

ImageNet-1K数据集获取

ImageNet 10 图像识别数据集 / 数据集 / 超神经 (hyper.ai) ----------------- 好大的数据集..

大数据基础设施搭建 - Doris

文章目录 一、Linux系统要求1.1 设置系统最大打开文件句柄数1.2 设置最大虚拟块的大小1.3 集群中其他安装doris的机器同上调整1.4 重启服务器生效 二、确认需要下载哪个Doris版本三、上传并解压压缩包3.1 创建目录3.2 解压fe3.3 解压be3.4 解压java udf函数3.4.1 解压3.4.2 复制…

金航标kinghelm宋仕强先生说,“金航标,连接世界

金航标kinghelm宋仕强先生说&#xff0c;“金航标&#xff0c;连接世界”。连接器的作用是为两个电路子系统提供一个可分离的界面&#xff0c;一方面使得零部件或子系统的维护或升级不必修改整个系统&#xff1b;另一方面提高了零部件的便携性、外围设备的拓展能力&#xff0c;…

搭建个人智能家居 3 -第一个设备“点灯”

搭建个人智能家居 3 -第一个外设“点灯” 前言ESPHome点灯 HomeAssistant 前言 前面我们已经完成了搭建这个智能家居所需要的环境HomeAssistant和ESPHome&#xff0c;今天我们开始在这个智能家居中添加我们的第一个设备&#xff08;一颗LED灯&#xff09;&#xff0c;如果环境…

Qt 如何搭建Lua的运行环境

一、Lua简介 Lua 是一种强大的、高效的、轻量级的、可嵌入的脚本语言。它支持过程&#xff08;procedural&#xff09;编程、面向对象编程、函数式编程以及数据描述。Lua 是动态类型的&#xff0c;运行速度快&#xff0c;支持自动内存管理&#xff0c;因此被广泛用于配置、脚本…

【Redis内存数据库】NoSQL的特点和应用场景

前言 Redis作为当今最流行的内存数据库&#xff0c;已经成为服务端加速的必备工具之一。 NoSQL数据库采用了非关系型的数据存储模型&#xff0c;能够更好地处理海量数据和高并发访问。 内存数据库具有更快的读写速度和响应时间&#xff0c;因为内存访问速度比磁盘访问速度快…

使用OCC进行旋转扫掠

旋转扫掠是将物体以某一个坐标轴为参照&#xff0c;按照指定的角度旋转生成新的图形的过程 这里使用面的案例&#xff0c;使用线的逻辑处理其实是一样的 //构造旋转轴 gp_Ax1 anAxis; //设置轴的原点 anAxis.SetLocation(0,0,0); //设置轴的方向 anAxis.SetDirection(gp_Dir(0…

Docker与Nacos的下载与安装配置

文章目录 docker作用docker的下载nacos 下载1. 首先搜索需要的下载2. 拉取stars最多的即可3. 启动nacos4. 打开防火墙8848端口5. 访问nacos docker 作用 Docker 是一种开源的容器化平台&#xff0c;它的作用主要包括以下几个方面&#xff1a; 应用程序的打包和分发&#xff1…

如何使用数字万用表测量接地是否良好

如何使用数字万用表测量接地是否良好 引言 在电器设备的安装和维护过程中&#xff0c;接地是非常重要的一项工作。良好的接地能够保证电器设备的安全运行&#xff0c;并防止因电气故障引起的火灾和人身伤害。数字万用表是一种常用的测试工具&#xff0c;本文将介绍如何使用数…

【软考高项】五、信息化发展之数字化转型与元宇宙

1、数字化转型 定义&#xff1a;数字化转换、数字化升级基础上&#xff0c;对其业务进行系统性、彻底的&#xff08;或重大和完全的&#xff09;重新定义。 驱动因素&#xff1a; 生产力飞升:第四次科技革命&#xff1a;第一科学范式为经验范式,第二科学范式为理论范式。第三…

Java高级编程—泛型

文章目录 1.为什么要有泛型 (Generic)1.1 泛型的概念1.2 使用泛型后的好处 2.在集合中使用泛型3.自定义泛型结构3.1 自定义泛型类、泛型接口3.2 自定义泛型方法 4.泛型在继承上的体现5.通配符的使用5.1 基本使用5.2 有限制的通配符的使用 1.为什么要有泛型 (Generic) Java中的…

红黑树笔记分享

【有道云笔记】红黑树 https://note.youdao.com/s/MLWAvCau