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