首页 > 编程语言 >【C#入门超简单】简单的项目实践

【C#入门超简单】简单的项目实践

时间:2024-06-22 11:31:28浏览次数:14  
标签:... Console 入门 文件 C# 用户 WriteLine 简单 文本

学习C#时,通过创建控制台应用程序来实践文件操作、用户输入与输出处理是非常好的方式。下面我将引导你完成一个简单的项目:一个文本记录器,它能让你输入一些文本,保存到文件中,还能读取并显示之前保存的内容。

第一步:创建控制台应用程序项目

  1. 打开Visual Studio或Visual Studio Code。
  2. 选择“创建新项目”。
  3. 选择“控制台应用(.NET Core)”或“.NET Console App”(取决于你的Visual Studio版本)。
  4. 给项目起个名字,比如“TextRecorder”,然后创建。

第二步:添加必要的命名空间

Program.cs文件的顶部,添加以下命名空间以使用文件操作相关的类:

using System;
using System.IO;

第三步:编写代码

接下来,我们将实现以下功能:

  • 用户可以选择输入文本并保存到文件。
  • 用户可以读取并显示文件中的内容。

修改Program.cs中的Main方法,加入以下代码:

// 首先,我们需要引入一些工具箱里的工具,这样才能做我们想做的事情。
using System; // 这个工具箱包含了基础的操作,比如打印信息到屏幕上。
using System.IO; // 这个工具箱专门用来处理文件的读写。

// 接下来是我们程序的主心骨,所有的事情都从这里开始。
class Program
{
    // Main方法是程序的入口,就像游戏开始的按钮。
    static void Main(string[] args)
    {
        // 我们想要让用户一直有事情可做,所以用一个循环让菜单一直显示。
        while (true) // 这句的意思是“一直做下面的事情,直到我说停”。
        {
            // 先告诉用户他们能干什么。
            Console.WriteLine("请选择操作:1. 写入文本 2. 读取文本 3. 退出");

            // 然后,耐心等待用户告诉我们他们的选择。
            string choice = Console.ReadLine(); // 这句是在说:“告诉我你的选择,我听着呢。”

            // 根据用户的选择,做不同的事情。
            switch (choice)
            {
                case "1": // 如果用户选了1...
                    WriteToFile(); // ...我们就带他们去写日记。
                    break; // 做完一件事,记得说“停”,这样程序不会乱跑。

                case "2": // 如果用户选了2...
                    ReadFromFile(); // ...我们就打开日记本让他们看之前写的。
                    break;

                case "3": // 如果用户说“够了,我想走了”(选择了3)...
                    Console.WriteLine("程序已退出。"); // ...我们就礼貌地说再见。
                    return; // 这个return就是离开Main方法,结束程序的意思。

                default: // 如果用户输入了奇怪的东西...
                    Console.WriteLine("无效的选择,请重新输入!"); // ...我们就提醒他们好好选。
                    break;
            }
        }
    }

    // 下面是两个帮手方法,一个负责写,一个负责读。

    // 这个方法就像是你的私人秘书,帮你把想法记录下来。
    static void WriteToFile()
    {
        Console.WriteLine("请输入要保存的文本:"); // 先告诉用户该干嘛。
        string content = Console.ReadLine(); // 然后安静地听用户说什么,并记下来。

        // 使用StreamWriter,就像是打开了一个新笔记本准备写字。
        using (StreamWriter writer = new StreamWriter("textrecord.txt", true))
        {
            // 把用户说的话一行行写进笔记本里。
            writer.WriteLine(content);
            Console.WriteLine("文本已保存!"); // 写完之后告诉用户一声。
        }
    }

    // 这个方法则是你的好奇宝宝朋友,帮你找出笔记本里写了啥。
    static void ReadFromFile()
    {
        // 先看看笔记本在不在。
        if (File.Exists("textrecord.txt"))
        {
            Console.WriteLine("文件内容如下:"); // 如果在,就告诉用户准备好了。

            // 使用StreamReader打开笔记本,一页页翻给你看。
            using (StreamReader reader = new StreamReader("textrecord.txt"))
            {
                string line;
                // 一行行读,读到哪行就读哪行。
                while ((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line); // 把读到的内容念给用户听。
                }
            }
        }
        else
        {
            // 如果笔记本不见了(文件不存在),就告诉用户这个悲伤的消息。
            Console.WriteLine("文件不存在!");
        }
    }
}

解释

  • Main方法中,我们创建了一个无限循环,让用户不断选择操作,直到选择退出。
  • WriteToFile方法会提示用户输入文本,然后使用StreamWriter将文本追加到名为"textrecord.txt"的文件中。
  • ReadFromFile方法会检查"textrecord.txt"是否存在,如果存在则使用StreamReader逐行读取并打印到控制台;如果不存在,则告知用户文件不存在。

第四步:运行程序

现在,你可以按下F5或点击运行按钮来启动程序,根据提示进行操作,体验文本的读写过程。

这个小项目不仅帮助你掌握了C#中的控制台应用开发、文件操作、用户输入输出处理等基础知识,还为你进一步探索C#编程世界奠定了基础。

标签:...,Console,入门,文件,C#,用户,WriteLine,简单,文本
From: https://www.cnblogs.com/Jason54/p/18262040

相关文章

  • Hutool将Cron表达式转换为日期字符串
    在Java开发中,处理定时任务是常见的需求。Cron表达式是一种强大的工具,用于定义这些定时任务的执行时间。然而,有时我们需要将Cron表达式转换为具体的日期字符串,以便于展示或进一步处理。本文将介绍如何使用Hutool工具库来实现这一转换。准备工作在开始之前,确保你的项目中包含了......
  • 【仿真建模-anylogic】Network代码解析
    Author:赵志乾Date:2024-06-22Declaration:AllRightReserved!!!1.类图2.代码解析//************************核心字段*************************//Network所属的levelprivatetransientLevellevel;//Network的绘制模式privateShapeDrawModedrawMode;//Network......
  • excel电子表格双表多列修改,点击式。
        excel的xlookup确实非常简单,有部分功能也非常快。但是有的人不会公式,或者不喜欢用公式,或者没有excel2021以上的版本。而且xlookup确实也有些还不是很完美的地方,比如对多列关联查询很慢。所以我们还是有必要增加类似的办法,hpctb提供了“双表多列修改”,我们来看一看。......
  • P3056 [USACO12NOV] Clumsy Cows S
    [USACO12NOV]ClumsyCowsS题目描述Bessiethecowistryingtotypeabalancedstringofparenthesesintohernewlaptop,butsheissufficientlyclumsy(duetoherlargehooves)thatshekeepsmis-typingcharacters.Pleasehelpherbycomputingthemi......
  • Rockchip RK3588 - Rockchip Linux Recovery升级
    ----------------------------------------------------------------------------------------------------------------------------开发板:ArmSoM-Sige7开发板eMMC:64GBLPDDR4:8GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:5.10-------------------------------......
  • Misc(17)——CTFHub
    Gradientsky下载题目附件,是一张图片:查看属性:无重要信息,拖入010中,搜索ctf,得到flag:word文件本质下载附件,是一个word文件,打开一堆文字:楚人居贫,读《淮南子》,得“螳螂伺蝉自障叶,可以隐形”,大喜。遂于树下仰望,欲觅螳螂伺蝉自障叶。偶见之,即缘而摘之,然不慎叶落树下。树下先有落......
  • [题解]AT_abc264_e [ABC264E] Blackout 2
    思路一道很经典的题,运用了一种叫「时光倒流」的技巧。「时光倒流」本质上就是将所有删边(或删点)的操作,通过倒序循环求值的方式转化为加边(或加点)。「时光倒流」具体实现通常伴随着并查集出现,维护一个连通块的某种性质。首先,我们需要将所有从始至终没有删过的边加入并查集。在这......
  • 在IdentityServer4生成的JWT中添加一个自定义的Claim,用于ABP框架中要用到的token信息
    用过IdentityServer4或者熟悉ASP.NETCore认证的都应该知道有Claim,如何理解ids4中的Claim?这里可以理解为声明,我们每个用户都有多个Claim,每个Claim声明了用户的某个信息比如:Role=Admin,UserID=1000等等,这里Role,UserID每个都是用户的Claim,都是表示用户信息的单元 ,我们不妨把它称为......
  • [题解]AT_abc263_d [ABC263D] Left Right Operation
    思路首先,不难发现最终的序列一定是形如下面的序列:\[l,\dots,l,a_i,a_{i+1},\dots,a_{i+j},r,\dotsr\]那么,我们就可以将其分为三段,每段都单独维护。首先,对于第一段,我们可以枚举出最后一个\(l\)的位置\(x\),那么和为\(x\timesl\)。对于第二段显然可以用前......
  • [题解]AT_abc256_h [ABC256Ex] I like Query Problem
    思路首先可以看一下P4145,在P4145中使用了一种叫势能线段树的Trick。对于势能线段树,我个人的理解是,对于一段区间(或一个点)直接暴力维护,在经过很少的次数后操作将没有意义的题就可以使用势能线段树。在本题中,如果没有推平操作,显然我们可以直接使用势能线段树,时间复杂度可以轻......