C#命名空间基础及案例

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

相关推荐

  1. C#命名空间基础案例

    2024-03-18 05:38:06       45 阅读
  2. [C++ 入门基础 - 命名空间]

    2024-03-18 05:38:06       20 阅读
  3. C++基础入门(命名空间,函数,引用)

    2024-03-18 05:38:06       47 阅读
  4. C++:std命名空间输入输出流

    2024-03-18 05:38:06       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 05:38:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 05:38:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 05:38:06       82 阅读
  4. Python语言-面向对象

    2024-03-18 05:38:06       91 阅读

热门阅读

  1. django 定时任务的创建

    2024-03-18 05:38:06       35 阅读
  2. HJ31 单词倒排

    2024-03-18 05:38:06       38 阅读
  3. cache的58问,您能回答上几个

    2024-03-18 05:38:06       41 阅读
  4. Python sorted()函数

    2024-03-18 05:38:06       34 阅读
  5. 前端项目构建过程中的思考落地以及拓展

    2024-03-18 05:38:06       35 阅读
  6. MySQL基础知识

    2024-03-18 05:38:06       33 阅读
  7. 基于Python的股票市场分析:趋势预测与策略制定

    2024-03-18 05:38:06       45 阅读
  8. 解决 sh 和 bash 在执行脚本时的差异:双括号问题

    2024-03-18 05:38:06       34 阅读
  9. AJAX-XMLHttpRequest

    2024-03-18 05:38:06       41 阅读
  10. 【前端】CSS常见的选择器

    2024-03-18 05:38:06       36 阅读
  11. K8s 集群高可用master节点ETCD挂掉如何恢复?

    2024-03-18 05:38:06       36 阅读