[Visual C# 从入门到精通] 1. Visual C#环境配置和第一个程序(命令行程序和uwp程序)


🌸只讲有用的,废话全省了🌸

Visual C#的环境配置

首先保证电脑里没有之前下载vs的残留(可能不会有太大影响),然后打开vs的官网,点开后会下载vs2022 installer,安装后会进入这个界面:
在这里插入图片描述

我们勾选☑️以下内容,我打上✅的都✅上:
在这里插入图片描述
然后看向右边一栏,找到windows应用程序开发,我们找到通用windows平台工具,将它✅上:
在这里插入图片描述

再点击右下角的下载安装即可,会开始自动安装,安装完毕后建议重启。


到此,Visual C#的环境配置到此为止。

第一个程序——命令行程序

命令行程序是什么呢?键盘输入win+r,右下角会获得一个窗口,输入cmd:
在这里插入图片描述

回车确定,这就是命令行:
在这里插入图片描述

命令行程序,顾名思义,就是在命令行跑的程序,那么我们开始创建。

新建命令行程序

🌟我们先打开安装好的vs2022(注意不是vs2022 installer,应该没有这种小可爱吧),单击创建新项目:
在这里插入图片描述

🌟筛选条件选择C#–windows,选择控制台应用(.NET Framework),点击下一步:
在这里插入图片描述

🌟项目名称不要中文,自己取一个,例如helloworld,位置默认也可以,自己要记住位置,✅上将解决方案和项目放在同一目录,框架就使用.NET Framework 4.6,创建:
在这里插入图片描述

🌟创建后会在ide中进入项目:
在这里插入图片描述

🌟介绍一下大致布局:

这是编码区:
在这里插入图片描述

这是解决方案资源管理器:

在这里插入图片描述
可以看出,解决方案内有一个consoleapp2的项目,一个解决方案内可以有多个项目,在项目内可以看见properties,在Visual Studio(VS)资源管理器中,"项目"下的"Properties"文件夹通常用于存储项目属性文件。这些属性文件包含了项目级别的配置信息,如项目名称、版本号、版权信息、程序集属性等。它们通常以.csproj或.vbproj等扩展名结尾,并且是XML格式的文件。

当你双击打开这些属性文件时,Visual Studio会提供一个图形用户界面(GUI),允许你修改这些属性,例如设置项目输出类型、目标框架、启动项目等。这些更改会反映在项目的属性文件中,并在构建或运行项目时使用。

此外,"Properties"文件夹还可能包含一些特定的属性文件,如:

AssemblyInfo.cs 或 AssemblyInfo.vb:包含程序集级别的属性,如版本号、公司名称、产品名称等。
Settings.settings:包含应用程序设置,如用户界面设置或配置文件。
Resources.resx:包含本地化资源,如字符串、图像等。
这些文件对于项目的配置和运行至关重要,并且通常在项目创建时自动生成,但目前对我们来说没什么用。

接下来是引用,在Visual Studio资源管理器中,“引用”(References)是项目的一个部分,它包含了项目依赖的所有外部组件和库。这些引用可以是:

  1. 程序集引用:指向.NET框架中的程序集,或者是第三方库的DLL文件。这些程序集包含了项目需要使用的类型和方法。

  2. 项目引用:当一个解决方案中包含多个项目时,一个项目可能会依赖于另一个项目。这种情况下,依赖的项目会在"引用"文件夹中添加对另一个项目的引用。

  3. COM组件:一些旧的Windows应用程序可能会使用COM组件,这些组件也可以作为引用添加到项目中。

  4. 服务引用:对于使用Windows Communication Foundation (WCF) 服务的项目,可以添加服务引用来自动生成客户端代码。

  5. NuGet包:NuGet是.NET的包管理器,可以通过NuGet包管理器添加对第三方库的引用。

  6. 项目间引用:在同一个解决方案中,一个项目可能会引用另一个项目,形成项目间的依赖关系。

  7. Web引用:对于需要与Web服务交互的项目,可以添加Web引用来生成与服务交互所需的代理类。

  8. 共享项目:在某些情况下,多个项目可能需要共享相同的代码。共享项目允许你创建一个库,其他项目可以引用它。

在Visual Studio中,你可以通过右键点击项目,选择"添加引用…"来管理项目的引用。这将打开一个对话框,让你浏览和选择要添加的引用类型。添加引用后,Visual Studio会自动处理引用的解析和编译时的链接。

引用是项目构建过程中不可或缺的一部分,确保了项目能够访问到它需要的所有外部资源。

我们下拉引用,可以看见都引用了哪个内容,现在我们一般引用一些程序集,也就是常见的dll文件,在这里举个例子:

在这里插入图片描述

我们可以发现这些都是一一对应的,只有引用了这些外部资源,才可以在代码中using它们。

接下来就是app.config文件,这个使用xml写的,目前无关紧要但不可以删除。

最后是项目文件,C#语言的项目文件后缀一般都是cs,我们双击program.cs,就可以打开文件代码了。

编写程序代码

🌟我们打开文件代码:
在这里插入图片描述

vs在我们创建了项目后给了框架了,我们只需要编写核心代码即可,这里我们需要给出命名空间的概念,官方概念去网上查就知道了,一般新手都肯定听不懂,我来举个例子,首先定位到namespace,这个直接翻译都知道什么意思吧,就是命名空间,他有什么作用呢?它可以制作一个空间,用来做什么呢,用来装类,什么是类呢,你可以把它理解为一个方法,举个例子,在一个叫system的空间内有一个类叫console,类里面又装有一个函数叫writeline,我们把console比作一个人👨,他生活在一个房子里🏠,这个人👨他会一个手艺叫writeline,现在我们需要这个人他露一手,但是一个房子里往往不知他一个人,我们想要找他帮忙的话我们就得先找到他,具体怎么做呢?我写个流程
先确定他的房子在哪:
在这里插入图片描述
我们引用system,然后我们要把它请来,我们自己搭建一个房子🏠,使用namespace ConsoleApp2,这个代码在项目开始时会给我们写好,很方便,我们项目叫什么,vs会默认我们命名空间叫什么:
在这里插入图片描述

现在有房子了,我们要先住进去,这个时候我们构造一个类,定义我们自己,internal限制了我们只能在这个房子里,你也可以叫这个房子为数据集,这时我们是叫program的类:
在这里插入图片描述
好了我们现在开始做我们要做的事,现在脑子里想我们要做这件事,这个开始想,在代码中具象化了:
在这里插入图片描述
在 C# 中,static void Main(string[] args) 是程序的入口点,即程序开始执行的地方。下面是对这个声明的详细解释:

  • static: 这表示 Main 方法是一个静态方法。静态方法属于类本身,而不是类的实例。这意味着你不需要创建类的实例就可以调用 Main 方法。

  • void: 这表示 Main 方法没有返回值。它执行完它的代码后不会返回任何值给调用者。

  • Main: 这是方法的名称,根据 C# 的规定,程序的入口点必须命名为 Main。

  • string[] args: 这是一个字符串数组参数,它表示传递给程序的命令行参数。这些参数在运行时由用户指定,可以用于控制程序的行为。例如,在命令行运行程序时,可以通过空格分隔传递多个参数。

当你编译并运行一个 C# 控制台应用程序时,.NET 运行时会自动寻找 Main 方法作为程序的启动点。Main 方法通常包含调用其他方法的代码,这些方法执行程序的主要逻辑。

好了,让我们开始做这件事,我们先找到console的房子,再找他这个人,再让他给我们表演用writeline给我们写个helloworld:
在这里插入图片描述
构思完毕,那么让我们执行这个想法,我们找到调试,找到开始执行不调试,不要直接调试,那样会运行完程序后直接退出:
在这里插入图片描述
在这里插入图片描述
运行成功

🌟那我们讲讲为什么要设置命名空间这个东西,比如A程序员写了一个类,叫write,B程序员也写了一个类,也叫write,它们把这两个类都上传供大家使用,但是你输入write只能是一个,那么这个时候我们需要有东西来区分这两个同名的人,命名空间应运而生,虽然你和我同名,但是我是江西人,你是河南人,虽然同名,但是大家还是可以区分开来,当然,除了是让我们可以区分外,更重要的是让计算机可以区分两个write的区别。


至此,我们已经成功创建了一个命令行程序并且理解了什么叫做命名空间和为什么需要命名空间了

创建一个uwp程序(图形应用程序)

如果你用过matlab的app designer你会发现两者非常相像,这是题外话,因为作者有幸用过哈哈哈😂。

🌟老规矩还是先创建项目:
在这里插入图片描述
🌟因为笔者已经创建过这个项目,所以直接看现成的,先看目录:

在这里插入图片描述

  • ‘Hello’ (Universal Windows):这是项目名称,表明这是一个 UWP 应用程序,UWP 允许开发者创建可在多种 Windows 设备上运行的应用程序。

  • Properties:前面提过,通常包含项目属性文件,比如配置设置、编译选项等。

  • 引用:前面提过,列出了项目所依赖的外部程序集或库。

  • Assets:通常包含应用程序的资源文件,比如图标、图片等。

  • App.xaml:UWP 应用程序的主界面定义文件,用于定义应用程序的全局资源和页面跳转等。

  • MainPage.xaml:应用程序的主页面定义文件,用户启动应用程序时首先看到的界面。

  • Package.appxmanifest:应用程序清单文件,包含了应用程序的元数据,如应用程序的名称、版本、发布者、所需权限等信息。

🌟我们双击MainPage.xaml文件,会打开设计界面,包括设计界面,xaml界面:

在这里插入图片描述

编写程序代码

🌟设计界面和xaml是一一对应的,什么意思呢?我来举个例子:
首先我们打开工具箱:
在这里插入图片描述
我们分别搜索TextBlock,TextBox 和 Button这三个组件放在画板上,这时你会发现,当你把组件一放在画板上,xaml立马就会添加对应的代码,并且都包含在 < Grid >元素中,各个组件所有的元素都包含在Grid元素中,如果你想要更加直观的修改组件元素,还有更好的办法,点击视图,选择属性窗口:
在这里插入图片描述

在右下角会出现窗口:
在这里插入图片描述

在这里你可以修改组件名称等等一系列内容,当我们做到了如下步骤:

在这里插入图片描述

我们运行代码会发现按下ok按钮后不会有任何反应,那是因为我们没有编写他的逻辑,我们点击ok按钮组件,查看他的属性,点击⚡️按钮:

在这里插入图片描述

在click栏为点击事件取个名字,没错,闪电⚡️这一栏都是事件,也就是按下按钮会发生的事情:
在这里插入图片描述
这个时候我们下拉MainPage.xaml文件,会出现MainPage.xaml.cs文件:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Popups;

// https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x804 上介绍了“空白页”项模板

namespace Hello
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void okClick(object sender, RoutedEventArgs e)
        {
            MessageDialog msg = new MessageDialog("hello" + userName.Text);
            msg.ShowAsync();
        }

        private void userName_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
    }
}

这是我们所添加的内容:

 MessageDialog msg = new MessageDialog("hello" + userName.Text);
 msg.ShowAsync();

我们新建一个对话框,对话框呈现内容为hello加上userName的文本内容,userName是我给我的textbox取得名称,如果你的textbox组件叫其他的,就把userName换成其他的。

然后我们将对话框异步处理,线程不与主对话框堵塞。

完成后我们选择生成,生成解决方案:
在这里插入图片描述

生成成功后我们点击本地计算机运行:
在这里插入图片描述

生成如下结果:
在这里插入图片描述

⚠️在本地生成uwp程序,需要打开电脑的开发者模式。

然后我们输入名字,点击ok:

请添加图片描述

✳️注意我叫 吃点李子

其他类型图形应用程序

  • WPF (Windows Presentation Foundation)
    WPF是一个用于构建Windows客户端应用程序的现代UI框架。
    它使用XAML(eXtensible Application Markup Language)作为其界面描述语言。
    WPF支持数据绑定、样式、动画和3D图形。
    WPF应用程序通常具有丰富、交互性强的UI。

  • WinUI (Windows UI Library)
    WinUI是一组原生的Windows UI库,用于构建适用于所有Windows设备的应用程序。
    它是UWP(Universal Windows Platform)的后续,提供了更多的灵活性和更低的系统要求。
    WinUI应用程序可以使用C#或C++进行开发。

  • WinForms (Windows Forms)
    WinForms是一个成熟的UI框架,用于快速开发Windows桌面应用程序。
    它使用拖放式的设计器和事件驱动的编程模型。
    WinForms应用程序通常开发速度快,适合传统的桌面应用程序。

总结

WPF:适合需要丰富交互和视觉效果的应用程序,但学习曲线较陡。
WinUI:适合需要跨设备支持的现代化应用程序,但资源和社区支持正在发展中。
WinForms:适合快速开发传统桌面应用程序,但UI设计和现代特性有限。

小结

简单讲了如何创建简单的应用程序,关于命名空间和类重点掌握。

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吃点李子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值