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

news2024/11/18 14:20:21

文章目录

  • 前言:
  • 1. 控制台项目的使用
  • 2. 数值隐式类型转换与强制类型转换
    • 2.1 隐式类型转换
    • 2.2 数值强制转换
    • 2.3 字符串强制转换
    • 2.4 万能转换器
  • 3. 字符串与数组
    • 3.1 字符串处理方法
    • 3.2 数组的创建与遍历
    • 3.3 字符串与数组之间的使用方法
  • 4. 引用类型与值类型
  • 5. 常量const与枚举enum的使用
    • 5.1 常量const
    • 5.2 枚举enum
  • 总结:

前言:

本文旨在为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#编程的基础,并能够应用到实际的编程工作中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计Python美食推荐系统 美团爬虫 美食可视化 机器学习 深度学习 混合神经网络推荐算法 Hadoop Spark 人工智能 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Scala-数据类型-概述(Scala 3.x 类型层次结构)

Scala Scala-数据类型 Scala1. Any — 顶级类型2. Matchable — 匹配类型3. AnyVal — 值类型的父类4. AnyRef — 引用类型的父类5. Null - 引用类型的子类型Tips: 为什么 null 不推荐使用&#xff1f; 6. Nothing - 底层类型 (Bottom Type)整理不易&#xff0c;对您有帮助的话…

嵌入式linux中红外接收基本方法分析

大家好,今天主要给大家分享一下,如何使用Linux系统中的红外接收驱动控制方法。 第一:Linux红外基本简介 红外遥控是我们常见的一种无线收发设备,具有抗干扰能力强,功耗低,成本低,易实现等优点。被很多电子设备特别是家用电器广泛采用,如电视遥控、空调遥控等。红外遥控…

AWTK-WIDGET-WEB-VIEW 实现笔记 (2) - Windows

在 Windows 平台上的实现&#xff0c;相对比较顺利&#xff0c;将一个窗口嵌入到另外一个窗口是比较容易的事情。 1. 创建窗口 这里有点需要注意&#xff1a; 父窗口的大小变化时&#xff0c;子窗口也要跟着变化&#xff0c;否则 webview 显示不出来。创建时窗口的大小先设置…

pgAdmin简单介绍

pgAdmin介绍 官网&#xff1a;https://www.pgadmin.org/ pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world. pgAdmin may be used on Linux, Unix…

Linux笔记---调试工具GDB(gdb)

1. gdb的概念 GDB&#xff0c;全称GNU Debugger&#xff0c;是一个功能强大的开源调试工具&#xff0c;广泛用于Unix和类Unix系统&#xff0c;以及Microsoft Windows和macOS平台。GDB允许开发者在程序执行过程中查看内部运行情况&#xff0c;帮助定位和修复程序中的错误。 gd…

如何在 Ubuntu 上安装 Mattermost 团队协作工具

简介 Mattermost 是一个开源、自托管的通信平台&#xff0c;专为团队协作设计。它类似于 Slack&#xff0c;提供聊天、消息传递和集成功能。Mattermost 在重视数据隐私的组织中特别受欢迎&#xff0c;因为它允许团队在自己的服务器上管理通信。以下是 Mattermost 的一些关键特…

2. Django中的URL调度器 (自定义路径转换器)

在 Django 中&#xff0c;URL 路由通常使用路径转换器&#xff08;path converters&#xff09;来匹配和捕获 URL 中的特定模式&#xff0c;例如整数、字符串或 slug 等。默认情况下&#xff0c;Django 提供了一些内置的路径转换器&#xff0c;如 <int>、<str>、&l…

【STM32】USB 简要驱动软件架构图

STM32 USB 软件架构比较复杂&#xff0c;建议去看 UM 1734 或者 st wiki STM32 USB call graph STM32 USB Device Library files organization Reference [1]: https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Introduction_to_USB_with_STM32 [2]: UM1734

MATLAB 使用教程 —— 命令窗口输入命令,工作区显示变量

命令在命令窗口输入变量在工作区显示 MATLAB 桌面包含的面板如下&#xff1a; 当前文件夹 - 此面板允许访问项目文件夹和文件。命令窗口 - 这是主要区域&#xff0c;用户在命令行中输入命令&#xff0c;命令提示符(>>).工作区 - 工作区显示所有变量&#xff0c;无论是创…

华为USG5500防火墙配置NAT

实验要求&#xff1a; 1.按照拓扑图部署网络环境&#xff0c;使用USG5500防火墙&#xff0c;将防火墙接口加入相应的区域&#xff0c;添加区域访问规则使内网trust区域可以访问DMZ区域的web服务器和untrust区域的web服务器。 2.在防火墙上配置easy-ip&#xff0c;使trust区域…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

blender 骨骼的动画基础 笔记总结

一、世界纹理 1.首先打开Node Wrangler&#xff08;世界纹理&#xff09;插件 在编辑的偏好设置这里&#xff0c; 演示一下这个插件&#xff1a; 然后通过shift a添加环境纹理 对其连接颜色后&#xff0c;选中世界纹理&#xff0c;通过按键ctrl t 二、动画 点击动画 1.…

java ssm 健康医馆管理系统 中医馆管理 健康平台 药店 源码jsp

一、项目简介 本项目是一套基于SSM的健康医馆管理系统&#xff0c;主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本、软件工具等。 项目都经过严格调试&#xff0c;确保可以运行&#xff01; 二、技术实现 ​后端技术&#x…

前端无感刷新token

摘要&#xff1a; Axios 无感知刷新令牌是一种在前端应用中实现自动刷新访问令牌&#xff08;access token&#xff09;的技术&#xff0c;确保用户在进行 API 请求时不会因为令牌过期而中断操作 目录概览 XMLHttpRequestAxiosFetch APIJQuni.request注意事项&#xff1a; 访问…

【AI图像生成网站Golang】雪花算法

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 雪花算法 雪花算法 (Snowflake) 是一种高效、可扩展的分布式唯一ID生成算法&#xff0c;最早由 Twitter 开发&…

[369]基于springboot的高校教师教研信息填报系统

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校教师教研信息填报系统信息管理难度大&#xff0c;容错…

《素书》:为上计,事当缓;为下计,事当急

《素书》是中国古代一部重要的典籍&#xff0c;相传为秦末黄石公作&#xff0c;内容主要讲述为人处世的道理。其中&#xff0c;“为上计&#xff0c;事当缓&#xff1b;为下计&#xff0c;事当急”这句话&#xff0c;给人以深刻的启示。 首先&#xff0c;对于上策之事&#xf…

树莓派4B Qt+FFMPEG 多线程录制USB相机mjpeg数据流“h264_omx“硬件编码的MP4文件

文章目录 1 前言2 一些问题说明2.0 树莓派4b系统版本2.1 Qt2.2 FFMPEG2.3 图像格式 3 核心代码3.0 代码逻辑3.1 pro文件3.2 avframequeue.cpp3.3 decodethread.cpp 4 资源下载 1 前言 本项目为在树莓派4B开发板上&#xff0c;通过QtFFMPEG以多线程分别解码、编码USB摄像头视频数…

排序算法(基础)大全

一、排序算法的作用&#xff1a; 排序算法的主要作用是将一组数据按照特定的顺序进行排列&#xff0c;使得数据更加有序和有组织。 1. 查找效率&#xff1a;通过将数据进行排序&#xff0c;可以提高查找算法的效率。在有序的数据中&#xff0c;可以使用更加高效的查找算法&…