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

文章目录

  • 前言:
  • 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#编程的基础,并能够应用到实际的编程工作中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…

【从零开始的LeetCode-算法】3270. 求出数字答案

给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数位&#xff08;1 < …

iMetaOmics | 刘永鑫/陈同-用于食物微生物组成和时间序列研究的微生物组数据库FoodMicroDB...

点击蓝字 关注我们 FoodMicroDB&#xff1a;用于食物微生物组成和时间序列研究的微生物组数据库 iMeta主页&#xff1a;http://www.imeta.science 研究论文 ● 原文链接DOI: https://doi.org/10.1002/imo2.40 ● 2024年11月1日&#xff0c;中国农业科学院深圳农业基因组研究所刘…

视觉slam十四讲 ch8 光流法和直接法

之前的都是单层光流 转载至Blibli 视觉SLAM十四讲_7视觉里程计1_计算相机运动_哔哩哔哩_bilibili

QSS 设置bug

问题描述&#xff1a; 在QWidget上add 一个QLabel&#xff0c;但是死活不生效 原因&#xff1a; c 主程序如下&#xff1a; QWidget* LOGO new QWidget(logo_wnd);LOGO->setFixedSize(logo_width, 41);LOGO->setObjectName("TittltLogo");QVBoxLayout* tit…

Linux运维篇-iscsi存储搭建

目录 概念实验介绍环境准备存储端软件安装使用targetcli来管理iSCSI共享存储 客户端软件安装连接存储 概念 iSCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的存储技术&#xff0c;该技术是将存储行业广泛…

WSL--无需安装虚拟机和docker可以直接在Windows操作系统上使用Linux操作系统

安装WSL命令 管理员打开PowerShell或Windows命令提示符&#xff0c;输入wsl --install&#xff0c;然后回车 注意&#xff1a;此命令将启用运行 WSL 和安装 Linux 的 Ubuntu 发行版所需的功能。 注意&#xff1a;默认安装最新的Ubuntu发行版。 注意&#xff1a;默认安装路径是…

【学习心得】算力云平台上的大模型部署并实现远程调用

以AutoDL算力云平台为例&#xff0c;部署国产开源ChatGLM3b模型。 一、准备工作 &#xff08;1&#xff09;准备一台算力服务器 首先&#xff0c;进入AutoDL官网的算力时长选择算力服务器资源。 创建好后会自动跳转控制台的“容器实例”界面&#xff0c;稍等片刻后选择“快捷…

Vue 中的透传,插槽,依赖注入

1. 透传attributes 在组件上使用透传attribute&#xff1a; 当你在父组件中使用子组件时&#xff0c;你可以添加一些attribute到子组件上&#xff0c;即使这些attribute没有在子组件的props中声明。 父组件&#xff1a; <!-- 父组件&#xff0c;例如 ParentComponent.vue…

97.【C语言】数据结构之栈

目录 栈 1.基本概念 2.提炼要点 3.概念选择题 4.栈的实现 栈初始化函数 入栈函数 出栈函数和栈顶函数 栈顶函数 栈销毁函数 栈 基本概念参见王爽老师的《汇编语言 第四版》第56和57页 节选一部分 1.基本概念 注意:这里提到的数据结构中的栈有别于操作系统的栈,后者是…

Spring-boot 后端java配置接口返回jsp页面

Spring-boot 后端java配置接口返回jsp页面 spring boot 基于spring MVC的基础上进行了改进&#xff0c; 将Controller 与ResponseBody 进行了合并成一个新的注解 RestController。 当用户请求时&#xff0c;需要有视图渲染的&#xff0c;与请求数据的请求分别使用 1.在appli…

【操作系统实验课】Makefile与编译

1. 创建项目结构 my_project 使用mkdir命令在根目录下创建项目my_project sudo mkdir /my_project 进入my_project目录 cd my_project src 在my_project目录下创建src子目录 sudo mkdir src 进入src目录 cd src root(根用户) 切换用户身份为root(根用户) root用户…

冠层四流近似模型的发展历史

1. Kunbelka-Munk theory This is the earlist model using a two-stream approximation d I d z − ( k s ) I s J d J d z ( k s ) J − s I \begin{aligned} &\frac{dI}{dz} -(ks)IsJ\\ &\frac{dJ}{dz} (ks)J - sI \end{aligned} ​dzdI​−(ks)IsJdzdJ​(…

Linux从0——1之shell编程4

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

2024.5 AAAiGLaM:通过邻域分区和生成子图编码对领域知识图谱对齐的大型语言模型进行微调

GLaM: Fine-Tuning Large Language Models for Domain Knowledge Graph Alignment via Neighborhood Partitioning and Generative Subgraph Encoding 问题 如何将特定领域知识图谱直接整合进大语言模型&#xff08;LLM&#xff09;的表示中&#xff0c;以提高其在图数据上自…

【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断

【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断 目录 文章目录 【大语言模型】ACL2024论文-15 大型语言模型中的最佳解释推断目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数&#xff1a;★★★★☆后记 大型语言模型中的最佳解释推断 摘…

【最新鸿蒙开发之性能优化——动态加载和延迟加载】

大家好&#xff0c;我是学徒小z&#xff0c;在经历了一段时间项目开发中&#xff0c;我也渐渐意识到了性能的重要性&#xff0c;今天就分享一篇优化应用运行性能的文章&#xff0c;话不多说&#xff0c;开干&#xff01; 引言 延时触发操作与延迟加载的简介 动态加载&#x…

云计算研究实训室建设方案

一、引言 随着云计算技术的迅速发展和广泛应用&#xff0c;职业院校面临着培养云计算领域专业人才的迫切需求。本方案旨在构建一个先进的云计算研究实训室&#xff0c;为学生提供一个集理论学习、实践操作、技术研发与创新于一体的综合性学习平台&#xff0c;以促进云计算技术…

信号保存和信号处理

目录 信号保存中重要的概念 内核中信号的保存 对sigset_t操作的函数 对block&#xff0c;pendding&#xff0c;handler三张表的操作 sigpromask ​编辑 sigpending 是否有sighandler函数呢&#xff1f; 案例 信号处理 操作系统是如何运行的&#xff1f; 硬件中断 …

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能

&#xff08;一&#xff09;方法一&#xff1a;安装插件SystemVerilog - Language Support 安装一个vscode插件即可&#xff0c;插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&am…