文档章节

结构—C#基础回顾

Sadhu
 Sadhu
发布于 2017/08/02 18:07
字数 533
阅读 3
收藏 0

 3.5.cs

/*
author:frank
datetime:2017-8-2 16:59:00

结构:
1.结构是值类型,不是引用类型。它们存储在栈中或存储为内联(inline),其生存期的限制于简单的数据类型一样。
2.结构不支持继承,但是结构体是继承Object,也可以访问及重新Object里面的方法。结构的继承链是:每个结构派生自System.ValueType类,System.ValueType类又派生自System.Object。
3.对于结构,构造函数的工作方式有一些区别。尤其是编译器总是提供一个无参数的默认构造战术,它是不允许替换的。
由于结构是值类型,传递的时候是直接复制值,不使用的时候就会被立即删除,由于结构传递的时候是按值传递,所以数据较大的情况下传递就会影响性能,可以使用ref按引用传递,但是底层方法修改结构体中的数据也会影响到实际结构体中的值。
结构体默认会有一个无参的构造函数,而且不允许替换,所以自己不能定义无参构造函数。
*/
using System;

namespace Sample
{
	public class Program
	{
		public static void Main(string[] args)
		{
			Dimensions point = new Dimensions();//跟类不一样,如果是类的话用new就会在堆内存中开辟内存空间,结构只是调用构造函数而已。
			point.Length = 3;
			point.Width = 6;
			Console.WriteLine(point.Diagonal);
			Dimensions point2;//不用new也行,构造函数只是初始化字段值。
			point2.Length = 2;
			point2.Width = 5;
			Console.WriteLine(point2.Diagonal);
		}
	}
	//默认构造函数把数值字段都初始化为0,把引用类型字段初始化为null,且总是隐式的给出,即使提供了其他带参数的构造函数,也是如此。提供字段的初始值也不能绕过默认构造函数。
	//也可以向类一样提供Close()方式及Dispose()方法。
	public struct Dimensions
	{
		public double Length;
		//public double Length = 1;//编译错误的,不能预定义自己的值
		public double Width;
		public Dimensions(double length,double width)
		{
			Length = length;
			Width = width;
		}
		public double Diagonal
		{
			get
			{
				return Math.Sqrt(Length * Length + Width * Width);
			}
		}
	}

}

 

© 著作权归作者所有

Sadhu
粉丝 1
博文 39
码字总数 11020
作品 0
武汉
程序员
私信 提问
欢迎进入Hensen_的博客目录(全站式导航)

Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础 语法基础——C++语法基础 语法基础——Objective-C语法基础 语法基础——PHP语法基础 面试复...

qq_30379689
2016/09/23
0
0
机房合作开篇之作——了解C#语言

前言 C#语言 环境 程序结构 小结 前言 近期小编开始了机房合作,前期是文档编写和构思,正在进行阶段,开发机房收费系统第三版使用的是C#语言,之前对于这门语言的接触是在C#视频和设计模式两...

m18633778874
2017/11/24
0
0
.NET Core CSharp初级篇 1-1

.NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:“张三是一名程序员,今年15岁重50.3kg,他的代号是‘A’,他家...

WarrenRyan
07/17
0
0
这些年,图灵出版的Apress经典书,你还记得吗?

1、移动开发 第一版畅销50000册,新版全面升级! 本书第2版新增内容有: Objecitve-C最新特性:代码块、ARC、类扩展 新增工具Clang静态分析器和GCD 如何使用UIKit框架开发精致的iOS应用程序 ...

生气的散人
2013/05/28
352
2
C#调用C函数(DLL)传递参数问题

备忘: 1.C函数参数为字符串char*。如果是入参,对应C#中string或StringBuilder;如果是出参对应C#中StringBuider; 2.C函数参数为结构体指针,需在C#中对应定义结构体。如果是入参,C#中可为...

夏春涛
2012/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部