结构

2018-06-22 07:52:16来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

参考:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072832.html

namespace 结构
{
//结构是值类型,在栈中分配空间;栈中保存的只是引用。直接包含它自己的数据,每个结构都保存自己的一份数据,修改每一个结构的数据都不会对其他结构的数据造成影响。
//类是引用类型,在堆中分配空间;两个对象指向的是同一个地址(堆空间),修改的值会影响原来的值。

//栈:由编译器自动分配,释放。在函数体定义的变量通常在栈中

//堆:一般由程序员分配释放,用New,Melloc分配得到的就是在堆上
public struct Person
{
public string _name;//字段 一定要注意细节就是前面的下划线,用于与变量的区别
public int _age;
public Gender _Gender;
}

public enum Gender
{
男,女
}
class Program
{
static void Main(string[] args)
{
//由于结构不是引用类型,因此结构类型的变量不能被赋予null值。
Person Person;
Person._name = "张三";
Person._age = 18;
Person._Gender = Gender.男;
Person P;
P._name = "大黄";
P._age = 12;
P._Gender = Gender.女;
Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", Person._name,Person._age,Person._Gender);
Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", P._name,P._age,P._Gender);
Console.ReadKey();

#region 例子

//PersonStruct p1, p2; //与类一样,但可以不new
//p1.Name = "张飞";
//p1.MobilePhone = "13553663108";
//p1.Birthday = DateTime.Now.AddYears(-10);

//p2 = p1; //将p1的值赋给p2 //由于是值类型,因此赋值等于将全部值全部复制到p2的栈空间
//p2.Name = "关羽"; //然后修改p2的值看是否会影响p1
//Console.WriteLine(p1.Name); //输出 张飞 没影响

//PersonClass p3 = new PersonClass();
//p3.Name = "张飞";
//p3.MobilePhone = "13553663108";
//p3.Birthday = DateTime.Now.AddYears(-10);

//PersonClass p4 = new PersonClass();
//p4 = p3; //将p3的值赋给p4 赋值后,由于是引用类型,因此两个对象指向的是同一个地址(堆空间)
//p4.Name = "关羽"; //然后修改p4的值看是否会影响p3
//Console.WriteLine(p3.Name); //输出 关羽 有影响

//Console.ReadKey();
#endregion

 

 


}
}
}

==================================

结构的构造函数要传参

namespace 结构Test
{
class Program
{
static void Main(string[] args)
{
Person p;
p.Age = 12;
p.Name = "李四";
Console.WriteLine("姓名{0} 年龄:{1}",p.Name,p.Age);
Console.ReadKey();
}
}
public struct Person
{

public Person(string name)
{
//每个 struct 均已有一个将对象初始化为零的默认构造函数。因此,可以为结构创建的构造函数必须带有一个或多个参数。
Name = "11";
Age = 12;
}
public int Age;
public string Name;
}
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ADO.NET json数组多条记录执行在DAL层循环(执行存储过程)

下一篇:Asp.net相关知识和经验的碎片化记录