目录
- 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 对象从文件中读取文本数据。