C#理论 —— C# 程序结构与Visual Studio 的使用

C# 编程是基于 C 和 C++ 的由微软开发的面向对象的编程语言。它基于 .Net framework.Net Core(跨平台)开发,用于编写 .Net 应用程序的语言。使用的集成开发环境(IDE)是微软的Visual Studio.

1. C# 程序结构

  • C# 工程文件的后缀名为.sln
  • C# 的代码文件的后缀为.CS

程序 = 数据 + 算法;

1.1 解决方案Solusion 与项目Porject 的关系

解决方案可包含多个项目,是某个需求的总的解决方案,而项目是某个具体问题的解决方法;

一个项目可以被多个解决方案使用,又叫项目的重用
在这里插入图片描述

  • 在解决方案中添加项目:右击解决方案资源管理器中的解决方案 - 添加 - 添加一个新项目或现有项目
    在这里插入图片描述

1.2 命名空间namespace 与类class 的关系

  • 命名空间namespace:以树形结构组织类,即命名空间(图书馆)可以包含多个类(某一本书),同一个命名空间内不可以包含同名的类,但不同的命名空间内可以包含同名的类;
  • 类class:构成程序的主体,包含在命名空间中;
# 错误代码
namespace MyNamespace  
{  
    public class MyClass  
    {  
        // ... 类的实现 ...  
    }  
  
    public class MyClass // 错误:同名的类  
    {  
        // ... 另一个类的实现 ...  
    }  
}

# 正确代码
namespace NamespaceA  
{  
    public class MyClass  
    {  
        // ... 类的实现 ...  
    }  
}  
  
namespace NamespaceB  
{  
    public class MyClass // 可以的,因为是在不同的命名空间中  
    {  
        // ... 另一个类的实现 ...  
    }  
}
  • 命名空间与类的关系:以Console.WriteLine();方法为例,其调用顺序依次为:命名空间System - 类Console - 方法WriteLine();,所以要使用Console.WriteLine();方法,就必须先引用命名空间using System;
    在这里插入图片描述

1.3 类库

类库是一个具体封装文件(后缀.dll),其包含了一个或多个命名空间,下文中“1.4.4.5 通过官方文档定位类、命名空间” 讲到要使用Console.WriteLine方法,除了必须引用指定命名空间,还必须包含相应类库;
在这里插入图片描述
可以在“框架”中发现,该类库已被包含;
在这里插入图片描述

  • 类库的引用

    1. 黑盒引用:引用官方已经写好的类库,看不到源代码,如NuGet 包、官方类库;
    2. 白盒引用:引用第三方写好的的类库,可看到源代码;
  • 类库的新建与编写:新建项目 - 选择要创建的类库,类库的编译结果是生成一个.dll 文件;
    在这里插入图片描述


1.3.1 例程:在同一个解决方案中同时创建项目和类库,并把类库引用在项目中使用

这是一个白盒引用

  1. 创建一个解决方案;
  2. 创建一个WPF 应用程序;
  3. 创建一个WPF 类库;如下图:
    在这里插入图片描述
  4. 修改WPF 类库中类C#文件名为Cal,并编写代码如下:
    在这里插入图片描述
using System;

namespace WpfLibrary1
{
    public class Cal // 在修改C#文件名的同时,系统会自动同步代码中的类名
    {
        public static double Add(double a, double b)
        {
            return a + b;
        }
        public static double Sub(double a, double b)
        {
            return a - b;
        }
    }
}
  1. 右击WPF 应用程序的依赖项,添加项目引用 - 在“项目”中找到项目类库并勾选引用,此时WPF 引用程序中有相应的显示;
    在这里插入图片描述
  2. 在WPF 应用程序中编写以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfLibrary1; // using 引入的WPF 项目库

namespace WPF_HelloWord
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button_ShowHelloWord_Click(object sender, RoutedEventArgs e)
        {
            double result = Cal.Add(1,2); // 成功引用WPF 项目库中的方法
            string numberAsString = result.ToString();
            textBox_ShowHelloWord.Text = numberAsString;
            
        }
    }
}

1.4 UML(通用建模语言)类图

如下图即是一个UML 类图:

一个program 类内的Main() 方法调用Console 类中的WriteLine()方法;
在这里插入图片描述

1.5 对象浏览器

以上文“1.2.2 类库”为例,寻找System.Console的关系,依次点击菜单栏视图 - 对象浏览器:
在这里插入图片描述

1.6 引用管理器

右击依赖项 - 添加项目引用,即可打开引用管理器;
在这里插入图片描述

  • 添加第三方类库:在引用管理器中选择浏览 - 浏览,选择要引用的第三方类库;
    在这里插入图片描述

1.7 NuGet 管理器

NuGet 包的引用属于黑盒引用;

  • NuGet 管理器打开:菜单栏 - 工具 - Nuget 包管理器 - 管理解决方案的Nuget 程序包;
  • NuGet 管理器:NuGet 是一个开源的软件包管理系统,在Visual Studio 2022中,NuGet 作为Visual Studio 的一个扩展,能够简化在Visual Studio项目中添加、更新和删除库;
  • NuGet 包:NuGet包是打包成单个ZIP文件的集合,文件扩展名是.nupkg;包含了编译好的代码(Dll)、与该代码相关的其他文件,以及一个描述性清单(包含包版本号等信息)。
  • 添加NuGet包
    在这里插入图片描述
    安装完NuGet 包后,解决方案管理器中即有NuGet 包的显示,NuGet 包内部包含的命名空间、类、方法,都可在对象管理器中查看;
    在这里插入图片描述

2. 开发IDE - Visual Studio

这里使用的Visual Studio 版本为2022;

  • WinForms 和WPF 的区别:WPF 要比前者新,最终都是用于开发窗口应用;
    在这里插入图片描述
  • .net framworks.net core 的区别.net framworks.net core 是两个不同的开发框架,其区别主要如下:
.NET Framework 和 .NET Core 是两个不同的开发框架,它们之间存在一些主要的区别。以下是它们之间的一些主要差异:

1. **跨平台支持**:
   - **.NET Framework** 仅限于 Windows 操作系统,并且不支持其他操作系统如 Linux 或 macOS。
   - **.NET Core** 是跨平台的,它可以在 Windows、Linux 和 macOS 等多个操作系统上运行。

2. **开源性**:
   - **.NET Framework** 是一个私有的商业软件,其源代码并不开源。
   - **.NET Core** 是一个开源项目,其源代码在 GitHub 上公开,并且遵循开源协议。这意味着任何个人或企业都可以基于 .NET Core 创建和发布产品,而无需向微软付费。

3. **版本更新和支持**:
   - **.NET Framework** 的最新版本是 4.8,并且微软已宣布未来不再计划推出新的版本。这意味着新的功能和改进将不会添加到这个框架中。
   - **.NET Core** 是一个持续发展和改进的项目。随着版本的迭代,新的功能和性能优化会被不断加入到这个框架中。

4. **应用类型支持**:
   - **.NET Framework** 支持 Windows 桌面应用程序、Web 应用程序和服务端应用程序。
   - **.NET Core** 除了支持 Windows 平台,还支持 macOS 和 Linux 等其他操作系统上的应用程序开发。

5. **性能和优化**:
   - **.NET Core** 在性能上进行了优化,并通过各种测试证明了其性能的提升。

6. **社区和生态系统**:
   - 由于 .NET Core 的开源性质,它拥有庞大的社区支持和活跃的开发者生态系统,这使得在遇到问题时更容易找到解决方案和支持。

7. **迁移和兼容性**:
   - 如果开发者有现有的 .NET Framework 应用程序,迁移到 .NET Core 可能需要一些工作,因为尽管两者都是 .NET 家族的一部分,但它们在内部实现和 API 上存在一些差异。

在这里插入图片描述

2.1 开发环境配置

Visual Studio 入门网站

  1. 到官网安装Visual Studio Community. 安装后立马登录,否则免费期限只有30天,登录可长期免费。

若登录出现网络问题,可尝试在账户选项中选择系统Web浏览器登录。

  1. 选择安装对应的工作负载,一直到安装结束;
    在这里插入图片描述

2.2 调试Debug

2.2.1 断点

  • 设置断点 - 运行代码 - 单步调试
    在这里插入图片描述
    在这里插入图片描述

2.2.2 调用栈(Call Stack)

代码调试时,在Call Stack 窗口,可查看到从调试点处,方法逐步调用的追踪,双击即可进入查看对应方法;
在这里插入图片描述

2.2.3 局部变量变化观察(Local)

当代码调试到某个方法内部时,Locals 窗口可查看该方法内部的局部变量的值与类型;
在这里插入图片描述

2.3 高效性

2.3.1 常用快捷键与代码快速插入

常用快捷键

  • 注释:Ctrl + K + C ,取消注释:Ctrl + K +U
  • 快速搜索:Ctrl + Q
  • 全部保持:Ctrl + Shift + S
  • 开始调试:F5
  • 智能标记:Ctrl + .
  • 快速选择提示词:当提示词出现时,连续按两下Tab

代码快速插入:输入代码代号,然后连续按两下Tab

  • cwSystem.Console.WriteLine();
  • fore
            foreach (var item in collection)
            {

            }
  • for
            for (int i = 0; i < length; i++)
            {

            }
  • ifelse ifelse
            if (true)
            {

            }
  • 构造函数:ctor
  • get、set 访问器:propfull
        private int myVar;

        public int MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }

2.3.2 波浪线与智能标记

波浪线可以在键入时对代码中的错误或潜在问题发出警报。将鼠标悬停在波浪线上,将看到关于此错误的更多信息和解决方案。智能标记的快捷键是Ctrl + .

在这里插入图片描述

2.3.3 重构

重构包括智能重命名变量、将一个或多个代码行提取到新方法中和更改方法参数的顺序;
在这里插入图片描述

2.3.3.1 封装字段

右击定义的字段 - 重构 - 封装字段:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.4 查看方法、类的关系

在自动填充中点击某个内容,即可查看其定义关系与简介;

如下Console 类来自于System 命名空间;
在这里插入图片描述

2.3.5 通过官方文档定位类、命名空间

  1. Visual Studio 菜单栏“帮助” - “查看帮助” - 跳转到官方页面 https://learn.microsoft.com/zh-cn/
  2. 页面右上角搜索目标内容,如console.writeline
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

另外还可以在IDE 中的选中任意类,点击键盘F1来快速去到该类的帮助页面:
在这里插入图片描述
在这里插入图片描述

2.3.6 命名空间、类、方法、事件等在Visual Studio 中的符号标记

  • 命名空间:
    在这里插入图片描述

  • 在这里插入图片描述
  • 方法:
    在这里插入图片描述
  • 事件:
    在这里插入图片描述

2.3.7 快速规范化代码

想要整页代码快速规范化,点击菜单栏编辑 - 高级 - 设置文档的格式(快捷键Ctrl+K+D)

2.5 解决方案资源管理器(项目浏览器 - Solution Explorer)

在Visual Studio 的右边,有一个“解决方案资源管理器”,可以查看和管理代码文件;
在这里插入图片描述

3. C#代码规范

  1. 函数注释规范:
        /// <function>
        /// 函数名称    :   Form1_Load
        /// 功能描述    :  	窗口Form1加载函数
        /// 输入变量    :   **
        /// 返 回 值    :  	无
        /// 最后修改人  :   xxx
        /// 最新更新日期:   20210109
        /// 说    明    :   在运行窗体时运行
        /// </function>

4. 其他

4.1 Visual Studio 中生成"发布"版本

  1. 在Visual Studio 中训着Release,点启动;
    在这里插入图片描述
  2. 在工程目录中找到obj 文件夹 - x86 - Release - 即可找到发布版本;

4.4 C# 和.Net Framework 的关系

.Net Framework 是一个平台,它提供了一个跨语言的统一编程环境。而 C# 是一种在 .Net Framework 平台上使用的编程语言。目前能在 .Net Framework 平台上使用的开发语言有很多,例如 Visual Basic .NET、Python、J#、Visual C++.NET 等等,但使用最多的还是 C#;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Truffle7电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值