自学内容网 自学内容网

【C#】C#编程基础:探索控制台应用与数据操作

前言:

本文旨在为C#语言的初学者提供一个全面的入门指南,涵盖了控制台项目的基本使用、数据类型的转换、字符串与数组的操作、引用类型与值类型的区别、常量与枚举的使用等多个方面。通过详细的代码示例和解释,读者可以逐步理解C#编程的基础知识,并为进一步的学习打下坚实的基础。

1. 控制台项目的使用

namespace QHD.ConsoleProject
{
    internal class Program
    {
        // 创建一个String类型变量,"Hallo world"
        private static string text = "hello world";

        static void Main(string[] args)
        {
            // 1. 控制台写入的方法
            Console.WriteLine(text);

            // 2. 控制台读取的方法
            Console.ReadLine();
        }
    }
}

2. 数值隐式类型转换与强制类型转换

2.1 隐式类型转换

namespace QHD.ConvertProject
{
    /// <summary>
    /// 入口类
    /// </summary>
    internal class Program
    {
        /// <summary>
        /// 入口方法
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 1. 两种类型数据类型必须是值类型,sort、int、float、double...
            // 2. 转换的类型必须小于目标类型

            // 创建一个short类型变量
            short data = 10;        // 16位
            double temp = 20.5f;     // 64位

            double result = data + temp;  

            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}

2.2 数值强制转换

// 强制转换后,float类型小数丢失
float datal = 10.5f;
int result2 = (int)datal;
Console.WriteLine(result2); // 输出 10
Console.ReadLine();

2.3 字符串强制转换

namespace QHD.StringConvertProject
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1. 字符串强制转换应用场景:字符串转换为整型 int long 浮点型 float double
            string text1 = "你好,世界";
            string text2 = "10";
            int b = int.Parse(text2);
            Console.WriteLine(b); // WriteLine 最终都会转换成string类型进行转换
            Console.ReadLine();
        }
    }
}

2.4 万能转换器

namespace QHD.CommonConvertProject
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1.万能转换器使用场景:任何的数据类型时间的转换,都可以使用万能转换器
            string text1 = "20.5"; // 有效表达式"内容"
            float a = Convert.ToSingle(text1);
            int b = Convert.ToInt32(a);
            double c = Convert.ToDouble(b);
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.ReadLine();
        }
    }
}

3. 字符串与数组

3.1 字符串处理方法

namespace QHD.StringTestProject1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string text = "遵守中华人民共和国的各项道德法规";
            // 1. 获取字符串长度
            int len = text.Length;
            Console.WriteLine(len); // 16
            // 2. 获取某个字符串的索引
            int index = text.IndexOf("人");
            Console.WriteLine(index); // qq.com
            // 3. 字符串截取
            string text1 = "123456@qq.com";
            string result1 = text1.Substring(0, text1.IndexOf("@"));
            Console.WriteLine("截取的字符串:" + result1); // 123456
            string result2 = text1.Substring(text1.IndexOf("@")+1);
            Console.WriteLine("截取的字符串:" + result2); // qq.com
            // 4. 字符串的比较运算(只能做 相等/不相等 的判断)
            string text2 = "ABC";
            string text3 = "abc";
            Console.WriteLine("abc和ABC比较后的结果:" + (text2 == text3)); // False
            // 5. 字符串常用格式化方法
            string time = "12点29分";
            string date = "2024年11月16日";
            //  5.1 采用占位符的方式实现
            string result3 = string.Format("日期:{0} 时间:{1}", date, time);
            Console.WriteLine(result3); // 日期:2024年11月16日 时间:12点29分
            //  5.2 采用$去实现格式化
            string result4 = string.Format($"日期:{date} 时间:{time}");
            Console.WriteLine(result4); // 日期:2024年11月16日 时间:12点29分
            //  5.3 拼接
            string result5 = "日期:" + date + " 时间:" + time;
            Console.WriteLine(result5); // 日期:2024年11月16日 时间:12点29分
            //  5.4 格式化方法
            float value = 45.6789124f;
            Console.WriteLine($"{value}格式化后的值:" + value.ToString("0.00")); // 45.68
            Console.WriteLine($"{value}格式化后的值:" + value.ToString("f3")); // 45.679
            // 6.字符串处理方法
            //  6.1 普通拼接方法(每次拼接都会创建一个对象)
            string title = "";
            title += "你好";
            title += ",";
            title += "世界";
            title += "!";
            Console.WriteLine(title); // 你好,世界!
            //  6.2 高效拼接方法 (维护一段字符数组,按一定规则进行扩容)
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("你好");
            stringBuilder.Append(",");
            stringBuilder.Append("世界");
            stringBuilder.Append("!");
            stringBuilder.Insert(0, "哈哈, ");
            stringBuilder.Remove( 3, 4);
            stringBuilder.AppendFormat("  标题:{0}", "啦啦:");
            Console.WriteLine(stringBuilder.ToString()); // 哈哈,世界!  标题:啦啦:
            Console.ReadLine();
        }
    }
}

3.2 数组的创建与遍历

namespace QHD.ArrayTestProject1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1. 班级名单创建一个数组
            // 方法1
            string[] names = new string[5] {"学生1", "学生2", "学生3", "学生4", "学生5"};
            // 方法2
            string[] names2 = new string[] { "学生1", "学生2", "学生3", "学生4", "学生5" };
            // 方法3 用数组初始化器直接创建
            string[] names3 = { "学生1", "学生2", "学生3", "学生4", "学生5" };
            // 方法4 
            string[] names4 = new string[5];
            names4[0] = "学生1";
            names4[1] = "学生2";
            names4[2] = "学生3";
            names4[3] = "学生4";
            names4[4] = "学生5";

            // 总结:数组的组成:标识符(数组的名称)、元素(成员)、类型(数据类型)、下标(索引、从0开始)

            // 2. 遍历数组:
            // 【1】for循环 
            for (int i = 0; i < 5; ++i)
            {
                Console.WriteLine(names[i]);
            }

            // 【2】foreach循环
            foreach (string name in names)
            {
                Console.WriteLine(name);
            }
            Console.ReadLine();
        }

    }
}

3.3 字符串与数组之间的使用方法

namespace QHD.StringAndArrayProject1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1. 分割字符串:字符串转换为了字符串数组
            string title = "你们好_这里是_中国湖北宜昌";
            string[] titles = title.Split('_'); // 默认是按空格分割

            // 2. 重组字符串: 将字符串数组转换为字符串
            string title2 = string.Join(" ", titles);
            Console.WriteLine(title2); // 你们好 这里是 中国湖北宜昌
            Console.ReadLine();
        }
    }
}

4. 引用类型与值类型

namespace QHD.ValueAndCiteProject
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1. 值类型: 基本数据类型,比如int、float、double、bool...
            // 赋值的是变量的副本 比如a内存地址为0x0001 b内存地址为0x0002
            int a = 10;
            int b = 20;
            b = a;
            b = 30;
            Console.WriteLine("A的值:" + a + " B的值:" + b); // A的值:10 B的值:30

            // 2. 引用类型:数组、对象...
            // 传递的是变量的本身 比如array1内存存地址是0x0001 array内存地址0x0001
            int[] array1 = { 10, 20 };
            int[] array2 = array1;
            array2[0] = 5;

            // 输出
            Console.Write("Array1的值:");
            foreach (int item in array1)
            {
                Console.Write(item + " ");
            } // Array1的值:5 20
            Console.Write("\nArray2的值:"); 
            foreach(int item in array2)
            {
                Console.Write(item + " ");
            } // Array2的值:5 20
            Console.ReadLine();
        }
    }
}

5. 常量const与枚举enum的使用

5.1 常量const

namespace QHD.ConstTestProject
{
    internal class Program
    {
        // 成员常量(私有的)
        private const int constValue2 = 30;
        static void Main(string[] args)
        {
            // 变量:变化的量
            // 常量:定义时要赋值,后面程序执行的过程中是不可以改变其值

            // 1.局部的常量
            const int constValue = 10;
            
            int result = 10 + constValue;

            Console.WriteLine("10 + 10的运算结果:" + result);

            // 2. 成员常量测试
            Console.WriteLine(Test1());

            Console.ReadLine();
        }

        private static int Test1()
        {
            return 20 + constValue2;
        }
    }
}

5.2 枚举enum

namespace QHD.EnumTestProject
{
    internal class Program
    {
        public enum ColorText
        {
            红色,  // 0
            黄色,  // 1
            蓝色   // 2
        }
        static void Main(string[] args)
        {
            // 1.枚举类型的意义:表达一个有范围的变量,每个枚举类型对应一个索引(取字符串/整型)
            // 2.定义方法:必须用public访问权限,使用关键字enum
            // 3.测试
            string text1 = ColorText.黄色.ToString();
            int index = (int)ColorText.黄色;
            Console.WriteLine(text1); // 黄色
            Console.WriteLine(index); // 1
            // 4.案例
            Console.WriteLine("请选择颜色:(0为红色,1为黄色,0为蓝色)");
            int index2 = Convert.ToInt32(Console.ReadLine());
            string text2= Enum.GetName(typeof(ColorText), index2);
            Console.WriteLine(text2);
            Console.ReadLine();
        }
    }
}

总结:

本文详细介绍了C#编程中的一些核心概念和常用操作。首先,我们探讨了控制台项目的使用方法,包括如何在控制台中输入和输出数据。接着,我们深入讨论了数值的隐式类型转换和强制类型转换,以及字符串的强制转换和万能转换器的使用。文章还涉及了字符串处理方法、数组的创建与遍历,以及字符串与数组之间的转换技巧。此外,我们区分了引用类型和值类型,并讨论了它们在内存中的存储和传递方式。最后,我们介绍了常量和枚举的使用,这些是C#中定义固定值和有限选项集的重要工具。通过这些内容的学习,读者应该能够掌握C#编程的基础,并能够应用到实际的编程工作中。


原文地址:https://blog.csdn.net/Colorful___/article/details/143800734

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!