【C#】零基础学会C#一——C#与.NET概述

本文档逐步引导零基础读者理解C#编程,包括控制台输入输出操作,Windows窗体应用创建,以及结构体的使用。通过实例讲解和练习,提升编程基础技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、目标

  • 编写第一个控制台的输入与输出程序-
  • 建立第一个Windows窗体应用程序
  • 定义一个简单的IP地址结构体

2、控制台的输入与输出

2.1问题

在控制台上实现文本的输入与输出。

2.2 说明

按照提示输入自己的姓名,程序输出你输入的名字,并欢迎使用C#语言。主要使用Console(控制台)对象WriteLine和Write方法实现显示;使用ReadLine方法读入字符。

2.3 分析

Main()是应用程序(可执行)的入口点,它必须包含在一个类中,且仅有一个类能使用该标志定义。

2.4 参考步骤

(1)为解决方案创建一个控制台应用程序的项目“Example_1”。
(2)将“Program.cs”类文件重命名为“Welcome.cs”。
(3)将以下代码添加到“Welcome.cs”中。

2.5 代码

using  System;   // using指令不再需要规定名字空间,就可以使用它们的方法和属性
using  System.Collections.Generic;
using  System.Text;
namespace Example_1
{
    class Welcome
    {
        /*这种注释跨越多行*/
        static void Main(string[] args)
        {
            //这是单行注释
            Console.Write("请输入你的姓名:");   //Write与WriteLine不同的地方在于它输出时不换行
            string strName = Console.ReadLine();
            Console.WriteLine("{0}+,你好!\n 欢迎使用C#语言!", strName);  //{0}代替WriteLine方法的参数表中紧随格式串后的第一个变量
        }
    }
}

在这里插入图片描述

2.6 防闪退

	Console.ReadKey();

3、建立Windows窗体应用程序

3.1 问题

设计一个窗口,可以将用户输入的两个操作数进行加法计算,并显示计算结果。

3.2 说明

首先要新建Windows应用程序类型的项目,创建成功后,可以得到一个名为Form1的空白窗体。可以从左边工具箱中的公共控件组中选择控件往窗体上拖放。
在Windows窗体上添加两个文本输入框供用户输入操作数,再添加一个按钮来对输入的操作数进行加法计算,最后将计算结果显示在第三个输入框中。

3.3 分析

Visual Studio.Net使开发图形界面程序简单,把需要的控件从工具箱拖放到Windows窗体上即可。使用Visual Studio.Net可以减少开放人员编写的代码量,使开放人员集中精力解决业务问题。

3.4 推荐步骤

(1)建立一个Windows应用程序项目,命名为“WinForm”。
(2)往Form1窗体上拖放3个Label和TextBox控件和一个Button控件,并对它们相应的Text属性进行修改,效果如图1-2:

Visual Studio C#拖拽添加控件时工具箱挡住了Form窗体时,只需要点一下工具箱标题栏上的蓝色别针按钮,这个问题就可以解决了。蓝色别针按钮就是工具箱标题栏上的第二个按钮,也是我们用红色框框出来的那个按钮。点击蓝色别针后,工具箱就不再遮挡Form窗体了在这里插入图片描述

3.5 代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            long oper1, oper2, result;
            //如果操作数为空,显示警告信息
            if ((textBox1.Text == "") || (textBox2.Text == ""))
            {
                MessageBox.Show(this,"操作数不能为空","提示信息",
                            MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            try
            {
                //将文本框中的数据(字符串型)转换成long型数据
                oper1 = Convert.ToInt64(textBox1.Text);
                oper2 = Convert.ToInt64(textBox2.Text);
                result = oper1 + oper2;
                //将和写入结果文本框
                textBox3.Text = Convert.ToString(result);
            }
            catch(Exception e1)
            {    //捕捉异常,例如:若输入字母,在转换成long类型时会引发异常
                 MessageBox.Show(this,e1.Message,"警告信息", MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }
    }
}

把下方代码复制到button里即可
在这里插入图片描述
自动生成的信息不用管他们,运行结果如下:
在这里插入图片描述

4、结构体类型训练

4.1 问题

使用4个byte类型的变量来对IP地址进行存储,并将这4个变量组成定义一个结构体。

4.2 说明

struct类型是一种可包含构造函数、常数、字段、方法、属性、索引器、运算符和嵌套类型的值类型。

4.3 分析

此问题要求使用一个结构体来接受和储存IP地址中的4个十进制数。该结构体可通过以下方式声明:
I P    s a m p l e S t r u c t ; IP \,\,sampleStruct; IPsampleStruct;
在C#中,类与结构体在语义上是不同的,结构是值类型,不需要实例化,而类是引用类型。

4.4 推荐步骤

(1)为解决方案创建一个控制台应用程序的项目“Example_2”。
(2)将“Program.cs”类文件重命名为“SampleStruct.cs”。
(3)将以下代码添加到“SampleStruct.cs”中。

4.5 代码

下面展示一些 内联代码片

using System;
using System.Collections.Generic;
using System.Text;
namespace Example_2
{
    //定义一个IP结构体
    struct IP
    {
        public byte b1, b2, b3, b4;
    }
    class SampleStruct
    {
        static void Main(string[] args)
        {
            IP sampleStruct;
            sampleStruct.b1 = 192;
            sampleStruct.b2 = 168;
            sampleStruct.b3 = 1;
            sampleStruct.b4 = 101;
            Console.Write("{0}.{1}",sampleStruct.b1,sampleStruct.b2);
            Console.Write("{0}.{1}", sampleStruct.b3, sampleStruct.b4);
        }
    }
}

在这里插入图片描述

5、练习

5.1 习题一

5.1.1 题目

设计项目s1-1。功能要求:不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入q字符的时候显示刚才输入的数字中的最大值。设一个变量int max,初始值为0,用户每输入一次就把用户输入的和max比较一下,如果输入的比max大,则让max等于用户输入。

5.1.2 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace s1_1
{
    class FindMax
    {
        static void Main(string[] args)
        {
            int temp,max = 0;
            string s = Console.ReadLine();
            while (Console.ReadLine() != "q")
            {
                s = Console.ReadLine();
                temp = Convert.ToInt16(s);
                if (max < temp) max = temp;
            }
            temp = Convert.ToInt16(s);
            if (max < temp) max = temp;
            Console.WriteLine("最大值:{0}", max);
            Console.ReadKey();
        }
    }
}

Console.ReadLine() 会等待直到用户按下回车,一次读入一行。

5.1.3 测试结果

在这里插入图片描述

5.2 习题二

5.2.1 题目

设计项目s1-2。功能要求:依次提示用户输入两个整数(假设i1、i2)。如果i1、i2都是正数,则将i1的值递增1,然后输出i1+i2的值;如果i1、i2都是负数,则将i1的值递减10,然后输出i1i2的值;如果i1、i2中任一个为0,则提示数据有错误;否则计算i1i2的绝对值。

5.2.2 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace s1_2
{
    class Calculate
    {
        static void Main(string[] args)
        {
            long op1, op2, result;
            Console.Write("操作数1:");   //Write与WriteLine不同的地方在于它输出时不换行
            op1 = Convert.ToInt64(Console.ReadLine());
            Console.Write("操作数2:");   //Write与WriteLine不同的地方在于它输出时不换行
            op2 = Convert.ToInt64(Console.ReadLine());
            if(op1==0||op2==0)
            {
                Console.WriteLine("数据错误:操作数不能为0!");
                return;         
            }
            else
            {
                if (op1 > 0 && op2 > 0)
                    result = op1 + 1 + op2;
                else
                {
                    if (op1 < 0 && op2 < 0)
                        result = (op1 - 10) * op2;
                    else
                        result = -(op1 * op2);
                }
            }
            Console.WriteLine("结算结果:{0}", result);
        }
    }
}

5.2.3 测试结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考资料

Visual Studio C#拖拽添加控件时工具箱挡住了Form窗体怎么办

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一拳Marx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值