我对结构这个对象的认识
《你不会时,它是座山;你学会时,它是张纸》,与大家共勉!
昨天,看到一篇有关结构的博文,引起了自己的共鸣。自己也曾为此思考了好长的一段时间,这个东西有什么用?在什么情况下用?有什么独到之处?各种书籍对此笔墨不多,一带而过。后来自己在机器上来回编码,写着写着感受就不一样了。现在,我就将自己的感受写出来,博大家一笑!
什么是结构?为什么叫结构?自己认为《结构就是某种应用中一组相关成员的集合》。在程序中,有各种类型的成员,如果我们把为某种实现的相关成员,组织成一个对象,用起来就会即清楚又方便。
举例说,我们有一堆计算机零件,用来组装成不同的计算机,这表述起来很麻烦,又容易出错。如果把零件放入机箱,就好表述了,这个机箱就是结构。
我们可以用这个结构实例为:张三的计算机、李四的计算机、王五的计算机。
接着我们就可以这样说:张三计算机.硬盘;李四计算机.内存;王五计算机.CPU。说到这大概您已经有所心动了吧!下面是自己写的一段代码。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
struct 结构 // 定义结构
{
public string m姓名; // 声明字段
public decimal m数学分数;
public decimal m物理分数;
public decimal m化学分数;
public decimal 总分 // 属性
{
get
{
return m数学分数 + m物理分数 + m化学分数;
}
}
public string 评价() // 方法
{
if ( m数学分数 + m物理分数 + m化学分数 >= 180 )
{
return "及格";
}
else
{
return "不及格";
}
}
}
static void Main(string[] args)
{
结构 综合评定 = new 结构(); // 实例
综合评定.m姓名 = "张三"; // 赋值
综合评定.m数学分数 = 90;
综合评定.m物理分数 = 80;
综合评定.m化学分数 = 70;
Console.WriteLine("{0} 数学: {1} 物理:{2} 化学:{3} 总分:{4};评价:{5}", 综合评定.m姓名, 综合评定.m数学分数.ToString(), 综合评定.m物理分数.ToString(), 综合评定.m化学分数.ToString(), 综合评定.总分.ToString(), 综合评定.评价());
Console.WriteLine();
综合评定 = new 结构(); // 重新实例(注意您应当理解为这个对象可以反复的使用)
综合评定.m姓名 = "李四"; // 赋值
综合评定.m数学分数 = 65;
综合评定.m物理分数 = 78;
综合评定.m化学分数 = 27;
Console.WriteLine("{0} 数学: {1} 物理:{2} 化学:{3} 总分:{4};评价:{5}", 综合评定.m姓名, 综合评定.m数学分数.ToString(), 综合评定.m物理分数.ToString(), 综合评定.m化学分数.ToString(), 综合评定.总分.ToString(), 综合评定.评价());
Console.ReadKey();
}
}
}
这段代码光看是感受不深的,所以请您最好运行几次,就会体会到结构的独到这处了。也许您会说,用别的方法我也能做到。确实,条条大道通罗马,这就算是其中一条吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?