**string*、*object**和**struct**

📅 2026/7/22 16:17:04 👁️ 阅读次数 📝 编程学习
**string*、*object**和**struct**

一、string 字符串(通俗详解)
## 1. 基本用途
专门用来存放**文字内容**,比如名字、手机号、一段话、文件路径等。
数字、符号只要放在引号里,都会被当成纯文本,不能直接做加减乘除运算。

、、、csharp

using System;

class Program
{
static void Main()
{
string name = "张三";
string msg = "今天天气很好";
Console.WriteLine(name);
Console.WriteLine(msg);

Console.ReadKey();
}
}
运行结果

张三
今天天气很好

## 2. 转义字符(特殊功能符号)
字符串里单个 `\` 是**转义符**,用来实现格式效果:
- `\n`:换行,相当于敲回车
- `\t`:制表符,相当于按 Tab 键,空出一段间距
- `\\`:想**原样输出一个反斜杠**,必须写两个 `\`(单个 `\` 会被当成指令)

、、、csharp

using System;

class Program
{
static void Main()
{
// \n 换行
Console.WriteLine("第一行\n第二行");

// \t 制表空格
Console.WriteLine("姓名\t年龄");

// \\ 输出单个反斜杠
Console.WriteLine("路径:C:\\Users");

Console.ReadKey();
}
}
运行结果

第一行
第二行
姓名 年龄
路径:C:\Users

## 3. 两个常用前缀符号
### (1)@ 逐字字符串
作用:**取消所有转义功能,内容原样输出**。
适合写文件路径、带大量 `\` 的文本,不用反复写 `\\`。

、、、csharp

using System;

class Program
{
static void Main()
{
string path = @"C:\Users\Desktop";
Console.WriteLine(path);

Console.ReadKey();
}
}
运行结果

C:\Users\Desktop

### (2)$ 字符串插值
作用:**直接把变量嵌入字符串**,告别繁琐的 `+` 拼接,写法简洁易读。
语法:字符串前加 `$`,变量放在 `{ }` 内部。

、、、csharp

using System;

class Program
{
static void Main()
{
string name = "李四";
int age = 20;
Console.WriteLine($"姓名:{name},年龄:{age}");

Console.ReadKey();
}
}
运行结果

姓名:李四,年龄:20

# 二、object 类型(通俗详解)
## 1. 核心定位
`object` 是 C# 里**所有数据类型的父类**,堪称**万能收纳盒**。
不管是整数、小数、文字、布尔值,还是自定义对象,全都可以存进 `object` 变量里。

## 2. 使用特点
1. 包容性极强:任何类型数据都能直接赋值给 `object`;
2. 本质:值类型存入 `object` 会发生**装箱**,取出使用时需要**拆箱**;
3. 适用场景:不确定数据类型、需要统一存放多种不同数据时使用。

、、、csharp

using System;

class Program
{
static void Main()
{
object a = 100; // 存整数
object b = "测试"; // 存字符串
object c = true; // 存布尔值

Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);

Console.ReadKey();
}
}
运行结果

100
测试
True

# 三、struct 结构体(通俗详解)
## 1. 核心定位
结构体是**自己定制的复合型容器**,专门用来把**多个关联零散数据打包成一个整体**。

举个生活例子:
描述一个人,需要姓名、年龄、身高;描述一本书,需要书名、价格、作者。
如果单独定义一堆零散变量,管理很乱,这时就可以用结构体,把一套相关数据封装在一起。

## 2. 使用流程
1. 先**定义结构体**:规定这个“盒子”里要存放哪些数据;
2. 再**创建结构体变量**:使用自定义的结构体,给内部数据赋值、读取。

、、、csharp

using System;

// 定义结构体:打包学生信息
struct Student
{
public string Name; // 姓名
public int Age; // 年龄
public string Class; // 班级
}

class Program
{
static void Main()
{
// 创建结构体实例
Student stu1;
stu1.Name = "小明";
stu1.Age = 18;
stu1.Class = "一班";

// 读取并输出
Console.WriteLine($"姓名:{stu1.Name},年龄:{stu1.Age},班级:{stu1.Class}");

Console.ReadKey();
}
}
运行结果

姓名:小明,年龄:18,班级:一班

## 4. 总结特点
- 属于**值类型**,数据独立;
- 用来整合一组逻辑相关的数据,让代码更规整;
- 适合描述简单实体(学生、商品、坐标等)。

---

# 整体速记(背诵版)
1. **string**:存文字;`\n`换行、`\t`空格;`@`原样输出,`$`嵌入变量。
2. **object**:所有类型的基类,万能容器,可存放任意数据。
3. **struct**:自定义数据盒子,把多个关联数据打包统一管理。