当前位置: 首页 > news >正文

C# 8.0 创建一个简单的控制台应用程序

在 C# 8.0 中,你可以编写各种程序,从简单的控制台应用到复杂的桌面、Web 或移动应用。下面,我将通过几个示例向你展示如何开始使用 C# 8.0 编写不同类型的程序。

1. 创建一个简单的控制台应用程序

步骤 1: 创建项目

在 Visual Studio 中,选择“创建新项目”。在项目模板中,选择“控制台应用 (.NET Core)”或“控制台应用 (.NET Framework)”,然后点击“下一步”。

步骤 2: 命名项目

给项目命名,例如 ConsoleAppDemo,然后点击“创建”。

步骤 3: 编写代码

在 Program.cs 文件中,你可以编写以下代码:

using System;namespace ConsoleAppDemo
{class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");Console.ReadLine(); // 等待用户输入,防止程序立即退出}}
}
步骤 4: 运行程序

按 F5 运行程序,你会在控制台窗口看到输出 "Hello, World!"。

2. 使用异步流和模式匹配(C# 8.0 新特性)

使用异步流(Asynchronous Streams)
using System;
using System.Threading.Tasks;class Program
{static async Task Main(string[] args){var numbers = new[] { 1, 2, 3, 4, 5 };await foreach (var number in GetNumbersAsync(numbers)){Console.WriteLine(number);}}public static async IAsyncEnumerable<int> GetNumbersAsync(int[] numbers){foreach (var number in numbers){await Task.Delay(100); // 模拟异步操作,例如网络请求或文件IO操作yield return number;}}
}
使用模式匹配(Pattern Matching)
using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(string[] args){var list = new List<object> { 1, "Hello", 3.14 };foreach (var item in list){if (item is int i) // 使用 is 检查类型并同时赋值给变量 i{Console.WriteLine($"Integer: {i}");}else if (item is string s) // 使用 is 检查类型并同时赋值给变量 s{Console.WriteLine($"String: {s}");}else if (item is double d) // 使用 is 检查类型并同时赋值给变量 d{Console.WriteLine($"Double: {d}");}}}
}

3. 创建一个 Windows Forms 应用程序(桌面应用)

步骤 1: 创建项目

在 Visual Studio 中,选择“创建新项目”。在项目模板中,选择“Windows Forms 应用”项目类型。命名项目,例如 WindowsFormsAppDemo,然后点击“创建”。

步骤 2: 设计界面

使用设计视图添加控件,如按钮和文本框。双击按钮以添加点击事件处理程序。例如:

private void button1_Click(object sender, EventArgs e) {textBox1.Text = "Hello, World!"; // 当按钮被点击时更改文本框的文本。
}
步骤 3: 运行程序并测试界面交互。

按 F5 运行程序,你会看到一个窗口,其中包含一个按钮和一个文本框。点击按钮后,文本框会显示 "Hello, World!"。

这些示例展示了 C# 8.0 在不同类型应用程序开发中的基本用法。你可以根据需要扩展和修改这些示例以适应更复杂的需求。

http://www.lryc.cn/news/590251.html

相关文章:

  • Prompt Engineering 快速入门+实战案例
  • 面向向量检索的教育QA建模:九段日本文化研究所日本语学院的Prompt策略分析(6 / 500)
  • 基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
  • 多房间 WebSocket 连接管理设计:从单例模式到多终端连接池
  • 【Qt】构建和编译 Qt 程序时如何减少生成的二进制可执行文件的大小
  • Navicat操作指南:MySQL数据库配置与Todo应用部署
  • MySQL 配置性能优化赛:用创意配置解锁性能潜能
  • 《Java语言程序设计》1.2.4复习题
  • 海盗王如何拍摄和打包小地图
  • 深度赋能推客,让 “业余选手” 变 “带货高手”​
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • HertzBeat 监控 SpringBoot 使用案例
  • 基于dcmtk的dicom工具 第二章 图像接受StoreSCP(1)
  • windows内核研究(进程与线程-等待链表和调度链表和线程切换)
  • 非控制器(如 Service、工具类)中便捷地获取当前 HTTP 请求的上下文信息
  • 16路串口光纤通信FPGA项目实现指南
  • 数据结构-1(顺序表)
  • 关于 OpenAI 的反思
  • GESP2025年6月认证C++四级( 第三部分编程题(2)排序)
  • 多态,内部类(匿名内部类),常用API(1)
  • HTTP vs HTTPS
  • 【React Native】布局文件-顶部导航栏
  • 从零开始学习 Redux:React Native 项目中的状态管理
  • 3D TOF 安全防护传感器
  • Ubuntu 上 GBase 8s 实例重启与字符集踩坑实录
  • 在UE中如何给骨骼网格体赋予动画
  • conda activate 时报错: CondaError: Run ‘conda init‘ before ‘conda activate‘
  • React Native 在 Web 前端跨平台开发中的优势与实践
  • Django ORM 查询工具对象详解
  • 基于WebRTC技术实现一个在线课堂系统