结构是一种可以包含数据成员和方法成员的值类型数据结构。为结构分配数据时不需要从托管堆中分配内存,结构类型的变量直接包含了该结构的数据。
结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。但如果要同时包括上述几种成员,则应该考虑使用类,使用结构对于小的数据结构特别有用,能够节省大量的分配内存,如坐标系中的点。
程序界面:
程序代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class StructArea : Form
{
public StructArea()
{
InitializeComponent();
}
public struct Rect//定义一个圆形结构
{
//定义一个常量PI,也可以直接使用Math.PI
public const double pi=3.1415926;
public double r;//圆形半径
//在下面的代码中 我们为结构体写了1个带参数的构造函数.参数为半径
//隐式的无参数的构造函数在结构中是已经存在的,所以不必添加1个无参数的构造函数
//在结构体的构造函数中,必须要为结构体的所有字段赋值.
public Rect(double bj)
{
//为字段进行赋值,在构造函数中必须为所有字段进行赋值
r = bj;
}
public double Area()
{
//也可以使用return Math.PI * r * r
return pi * r*r;
}
}
private void button1_Click(object sender, EventArgs e)
{
//用户输入圆形半径
double r = double.Parse(tex_r.Text.ToString());
//使用new关键字来创建结构体对象,调用带有一个参数的构造函数
Rect rect = new Rect(r);
//调用结构体对象中计算面积的方法,将结果转换为字符串进行输出
tex_result.Text = rect.Area().ToString();
}
}
}
结语:
结构是值类型,它在栈上分配数据,并且结构的赋值将分配产生一个新的对象,而类是引用类型。它在堆上分配数据,对类的对象进行赋值时只是复制了引用,它们都指向同一个实际对象分配的内存。
在结构中隐式的构造函数默认存在,该代码为结构体写了1个带参数的构造函数public Rect(double bj),为字段进行赋值,值得注意的是在结构体的构造函数中,必须要为结构体的所有字段赋值,否则会报错。
喜欢的请关注和收藏!