.Net高级技术——结构体
结构体
结构体和类的区别:结构体是值类型,类是引用类型
结构体非常类似于类,但是值类型(拷贝传递),不能被继承
Int32、DateTime等都是结构体,从ValueType继承,值类型。
结构体测试程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace 结构体
{
class Program
{
static void Main(string[] args)
{
Person p1 = new Person();
Person p2 = p1;
p1.Age = ;
p1.Name = "孤傲苍狼";
Console.WriteLine("p1.Name={0},p1.Age={1}", p1.Name, p1.Age);
Console.WriteLine("p2.Name={0},p2.Age={1}", p2.Name, p2.Age);
p2.Name = "白虎神皇";
Console.WriteLine("p1.Name={0},p1.Age={1}", p1.Name, p1.Age);
Console.WriteLine("p2.Name={0},p2.Age={1}", p2.Name, p2.Age);
Console.WriteLine(object.ReferenceEquals(p1, p2));
Console.WriteLine(object.Equals(p1,p2));
Console.WriteLine(p1 == p2);
MyPoint point1 = new MyPoint();
MyPoint point2 = point1;
Console.WriteLine(object.ReferenceEquals(point1, point2));//结构体是值类型,拷贝一份,因此point1和point2是两个不同的对象
point1.X = ;
point1.Y = ;
point1.SayHello();
Console.WriteLine("point1.X={0},point1.Y={1}", point1.X, point1.Y);
Console.WriteLine("point2.X={0},point2.Y={1}", point2.X, point2.Y);
Console.ReadKey();
}
}
//结构体非常类似于类,但是值类型(拷贝传递),不能被继承
//Int32、DateTime等都是结构体,从ValueType继承,值类型。
/// <summary>
/// 定义结构体
/// </summary>
struct MyPoint
{
/// <summary>
/// 定义结构体的属性
/// </summary>
public int X { get; set; }
/// <summary>
/// 定义结构体的属性
/// </summary>
public int Y { get; set; }
/// <summary>
/// 定义结构体的方法
/// </summary>
public void SayHello()
{
Console.WriteLine("HelloWorld!");
}
}
/// <summary>
/// 定义类
/// </summary>
class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
}
程序运行结果:

.Net高级技术——结构体的更多相关文章
- 第四篇 .NET高级技术之结构体及值类型引用类型
结构体 在平时的开发中很少自己去写结构体,他是一种值类型的数据.对于结构,不像类那样存在继承,一个结构体不能从另一个结构或类继承.但是结构体从基类Object继承. 语法: //struct是定义结构 ...
- 被遗忘的C结构体打包技术
今天看到的一篇文章,记录一下:https://github.com/ludx/The-Lost-Art-of-C-Structure-Packing 失传的C结构体打包技艺 作者:Eric S. Ra ...
- [译]基于GPU的体渲染高级技术之raycasting算法
[译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针 结构体: typedef struct stu{ char name[ ...
- 第20章 DLL高级技术(2)
20.3 延迟载入DLL 20.3.1延迟载入的目的 (1)如果应用程序使用了多个DLL,那么它的初始化可能比慢,因为加载程序要将所有必需的DLL映射到进程的地址空间.→利用延迟加载可将载入过程延伸到 ...
- 失落的C语言结构体封装艺术
Eric S. Raymond <esr@thyrsus.com> 目录 1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 ...
- (转)失落的C语言结构体封装艺术
目录1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 7.难以处理的标量的情况 8.可读性和缓存局部性 9.其他封装的技术 10.工具 ...
- C与C++结构体的区别
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
随机推荐
- Python 安装requests模块
window下安装: 注:不要使用 easy_install requests 命令 这种方式安装后不能卸载,建议使用pip 方法 1.自动安装 输入cmd命令进入命令行窗口,执行 pip insta ...
- JAVA复习笔记:内存结构和类加载
Part1:JVM内存结构 JVM定义了若干个程序执行期间使用的数据区域.这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁.而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出 ...
- Java OOM学习
转载自原文: 什么是java OOM?如何分析及解决oom问题? 什么是OOM? OOM,全称"Out Of Memory",翻译成中文就是"内存用完了",表现 ...
- Centos之目录处理命令
linux中 关于目录 有几个重要概念 一个是 / 根目录 还有一个当前用户的家目录 比如 root用户的家目录是 /root 普通用户的家目录是/home/xxx 下 root登录 默认家目录 ...
- OBJECT_ID()的使用方法
数据库中每个对像都有一个唯一的ID值,用Object_name(id)可以根据ID值得到对像的名称,object_id(name)可以根据对像名称得到对象的ID object_id()只能返回用户创建 ...
- SQL Server存储过程的删除方法
SQL Server存储过程的删除方法使我们经常会用到的,下面就为您介绍扩展存储过程的删除方法,如果您对SQL Server存储过程方面感兴趣的话,不妨一看. --清除SQL Server所有的危险扩 ...
- 什么是 CLR(转)
CLR(公用语言运行时)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离..NET提供了一个运行时环境,叫做公用语言运行时(Comm ...
- Vue.js学习笔记(一) - 起步
本篇将简单介绍一下Vue.js,并在Node.js环境下搭建一个简单的Demo. 一.简介 我个人理解,Vue.js是一套前端视图层的框架,它只关心视图展示和数据绑定,它的一些语法与Angular 1 ...
- 【51nod】1773 A国的贸易
题解 FWT板子题 可以发现 \(dp[i][u] = \sum_{i = 0}^{N - 1} dp[i - 1][u xor (2^i)] + dp[i - 1][u]\) 然后如果把异或提出来可 ...
- 启动win8.1时提示 api-ms-win-crt-runtime-l1-1-0.dll丢失
电脑里没有安装windows的更新KB2999226 到微软官网 https://www.microsoft.com/zh-cn/download/details.aspx?id=49081 下载对应 ...