.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实战核心技术详解 ...
随机推荐
- DOS命令大全(一)
#1 一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" ...
- java 内部类与控制框架
应用程序控制框架(application framework)就是设计解决某类特殊问题的一个类,或一组类,要运用某个应用程序框架,通常是继承一个类或多个类,并覆盖这些方法.在覆盖的方法中编写代码定制应 ...
- (一)问候 HtmlUnit
第一节: HtmlUnit 简介 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实 ...
- JS中给函数参数添加默认值
最近在Codewars上面看到一道很好的题目,要求用JS写一个函数defaultArguments,用来给指定的函数的某些参数添加默认值.举例来说就是: // foo函数有一个参数,名为x var f ...
- 树莓派3B安装远程
步骤1:树莓派3安装 RDP SERVER 及VNC SERVER sudo apt-get install -y tightvncserver sudo vncserver 最后才知道一定要加上VN ...
- slf4j logback pom
pom: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g ...
- Filter的应用--权限过滤
因为项目比较长,需要一步步进行实现,所以分解成一个一个需求. 一:需求一 1.需求一 可以看某人的权限,同时,可以对这个用户进行权限的修改. 2.程序实现 3.程序目录 4.User.java pac ...
- nginx、php-fpm、swoole HTTP/TCP压测对比
本次测试是在win7下docker环境中进行压测,共创建一个nginx容器.一个php-fpm容器和一个swoole容器,客户端请求nginx服务器,nginx接收用户访问请求并转发给php-fpm, ...
- ARKit:增强现实技术在美团到餐业务的实践
前言 增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术.Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简 ...
- JQuery基础-DAY1
jQuery介绍 是一个轻量级的js框架/库,其宗旨是write less do more. jQuery对象 js的对象叫做dom对象 使用jQuery框架产生的对象是jQuery对象,是对dom对 ...