.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实战核心技术详解 ...
随机推荐
- 牛客红包OI赛 C 小可爱表白
据说是个公式题. Code #include<cstdio> #include<cstring> #include<algorithm> using namespa ...
- Java字符串拼接效率对比
1.来自:http://blog.csdn.net/Zen99T/article/details/51255418 2.来自:http://blog.csdn.net/kimsoft/article/ ...
- C++11之auto和decltype
auto自动类型推断,用于从初始表达式中推断出变量的类型. auto a;// 错误,没有初始化表达式,无法推断出a的类型 autoint a =10;// 错误,auto临时变量的语义在C++ 11 ...
- es6之yield
yield 关键字用来暂停和继续一个生成器函数.我们可以在需要的时候控制函数的运行. yield 关键字使生成器函数暂停执行,并返回跟在它后面的表达式的当前值.与return类似,但是可以使用next ...
- OA项目Spring.Net代替抽象工厂(三)
Servrvice层的代码: <?xml version="1.0" encoding="utf-8" ?> <objects xmlns=& ...
- Spring Boot整合JPA、Redis和Swagger2
好久没有总结了,最近也一直在学习.今天就把spring boot与其它技术的整合做个小总结,主要是jpa.redis和swagger2.公司里有用到这些,整合起来也很简单. 首先,新建一个Spring ...
- Kotlin尝试
Kotlin 是一种静态类型的编程语言,可在 Java 虚拟机上运行,也可以编译为 JavaScript 源代码.其主要发展来自位于俄罗斯圣彼得堡的 JetBrains 程序员团队.虽然语法与 Jav ...
- JAVA类课后练习
1.Pg168--2 package com.hanqi; import java.util.Scanner; public class Rectangle { Rectangle() { //完成初 ...
- android拾遗——AlarmManager的使用
AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Inten ...
- Spark(四)Spark之Transformation和Action
Transformation算子 基本的初始化 java static SparkConf conf = null; static JavaSparkContext sc = null; static ...