结构体

结构体和类的区别:结构体是值类型,类是引用类型

结构体非常类似于类,但是值类型(拷贝传递),不能被继承

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高级技术——结构体的更多相关文章

  1. 第四篇 .NET高级技术之结构体及值类型引用类型

    结构体 在平时的开发中很少自己去写结构体,他是一种值类型的数据.对于结构,不像类那样存在继承,一个结构体不能从另一个结构或类继承.但是结构体从基类Object继承. 语法: //struct是定义结构 ...

  2. 被遗忘的C结构体打包技术

    今天看到的一篇文章,记录一下:https://github.com/ludx/The-Lost-Art-of-C-Structure-Packing 失传的C结构体打包技艺 作者:Eric S. Ra ...

  3. [译]基于GPU的体渲染高级技术之raycasting算法

    [译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...

  4. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  5. C语言--- 高级指针2(结构体指针,数组作为函数参数)

    一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[ ...

  6. 第20章 DLL高级技术(2)

    20.3 延迟载入DLL 20.3.1延迟载入的目的 (1)如果应用程序使用了多个DLL,那么它的初始化可能比慢,因为加载程序要将所有必需的DLL映射到进程的地址空间.→利用延迟加载可将载入过程延伸到 ...

  7. 失落的C语言结构体封装艺术

    Eric S. Raymond <esr@thyrsus.com> 目录 1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 ...

  8. (转)失落的C语言结构体封装艺术

    目录1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 7.难以处理的标量的情况 8.可读性和缓存局部性 9.其他封装的技术 10.工具 ...

  9. C与C++结构体的区别

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

随机推荐

  1. UFLDL(五)自编码算法与稀疏性

    新教程内容太繁复,有空再看看,这节看的还是老教程: http://ufldl.stanford.edu/wiki/index.php/%E8%87%AA%E7%BC%96%E7%A0%81%E7%AE ...

  2. python_selenium自动化测试框架

    设计思路 本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享. 框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测 ...

  3. Java 容器的基本概念

    java容器类类库的用途时"保存对象",并将其划分为两个不同的概念: 1)Collection(采集).一个独立元素的序列,这些元素都服从一条或多条规则,List必须按照插入的顺序 ...

  4. virtualenv,virtualenvwrapper安装及使用

    1.安装 # 安装: (sudo) pip install virtualenv virtualenvwrapper # centos7下 pip install virtualenv virtual ...

  5. Unix IPC之pipe

    pipe创建函数: #include <unistd.h> /* Create a one-way communication channel (pipe). If successful, ...

  6. Git简明教程一、基本概念

    文本是写给新手的Git入门教程.本文的目的是让新手能够快速了解并开始使用Git,因此只会介绍最基本.同时也是最核心的知识.其中包括使用Git的基本步骤和Git中最常用的命令,以及如何使用GitHub托 ...

  7. 基于docker 搭建Elasticsearch6.2.4(centos)

    一.介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为 ...

  8. R语言学习笔记:choose、factorial、combn排列组合函数

    一.总结 组合数:choose(n,k) —— 从n个中选出k个 阶乘:factorial(k) —— k! 排列数:choose(n,k) * factorial(k) 幂:^ 余数:%% 整数商: ...

  9. c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历

    二叉树的创建 思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树. TreeNode* createTree(int *arr, int ...

  10. DDD领域模型企业级系统(二)

    用户层: 1.请求应用层获取用户显示的信息 2.发送命令给应用层要求执行某个命令 应用层: 对用户界面提供各种应用功能(包括信息获取与命令执行),应用层不包含业务逻辑,业务层是由应用层调用领域层(领域 ...