C#语言还是比较常见的东西,这里我们主要介绍C#类和结构,包括介绍C#类和结构示例等方面。

创新互联是一家专注于网站设计制作、成都网站设计与策划设计,谷城网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:谷城等地区。谷城做网站价格咨询:028-86922220
C#类和结构的区别
类:
◆类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存
◆类有构造和析构函数
◆类可以继承和被继承
结构:
◆结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
◆结构没有构造函数,但可以添加。结构没有析构函数。
◆结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口。
C#类和结构示例:
根据以上比较,我们可以得出一些轻量级的对象***使用结构,但数据量大或有复杂处理逻辑对象***使用类。如:Geoemtry(GIS 里的一个概论,在 OGC 标准里有定义) ***使用类,而 Geometry 中点的成员***使用结构。
- using System;
 - using System.Collections.Generic;
 - using System.Text;
 - namespace Example16
 - {
 - interface IPoint
 - {
 - double X
 - {
 - get;
 - set;
 - }
 - double Y
 - {
 - get;
 - set;
 - }
 - double Z
 - {
 - get;
 - set;
 - }
 - }
 - //结构也可以从接口继承
 - struct Point: IPoint
 - {
 - private double x, y, z;
 - //结构也可以增加构造函数
 - public Point(double X, double Y, double Z)
 - {
 - this.x = X;
 - this.y = Y;
 - this.z = Z;
 - }
 - public double X
 - {
 - get { return x; }
 - set { x = value; }
 - }
 - public double Y
 - {
 - get { return x; }
 - set { x = value; }
 - }
 - public double Z
 - {
 - get { return x; }
 - set { x = value; }
 - }
 - }
 - //在此简化了点状Geometry的设计,实际产品中还包含Project(坐标变换)等复杂操作
 - class PointGeometry
 - {
 - private Point value;
 - public PointGeometry(double X, double Y, double Z)
 - {
 - value = new Point(X, Y, Z);
 - }
 - public PointGeometry(Point value)
 - {
 - //结构的赋值将分配新的内存
 - this.value = value;
 - }
 - public double X
 - {
 - get { return value.X; }
 - set { this.value.X = value; }
 - }
 - public double Y
 - {
 - get { return value.Y; }
 - set { this.value.Y = value; }
 - }
 - public double Z
 - {
 - get { return value.Z; }
 - set { this.value.Z = value; }
 - }
 - public static PointGeometry operator +(PointGeometry Left, PointGeometry Rigth)
 - {
 - return new PointGeometry(Left.X + Rigth.X, Left.Y + Rigth.Y, Left.Z + Rigth.Z);
 - }
 - public override string ToString()
 - {
 - return string.Format("X: {0}, Y: {1}, Z: {2}", value.X, value.Y, value.Z);
 - }
 - }
 - class Program
 - {
 - static void Main(string[] args)
 - {
 - Point tmpPoint = new Point(1, 2, 3);
 - PointGeometry tmpPG1 = new PointGeometry(tmpPoint);
 - PointGeometry tmpPG2 = new PointGeometry(tmpPoint);
 - tmpPG2.X = 4;
 - tmpPG2.Y = 5;
 - tmpPG2.Z = 6;
 - //由于结构是值类型,tmpPG1 和 tmpPG2 的坐标并不一样
 - Console.WriteLine(tmpPG1);
 - Console.WriteLine(tmpPG2);
 - //由于类是引用类型,对tmpPG1坐标修改后影响到了tmpPG3
 - PointGeometry tmpPG3 = tmpPG1;
 - tmpPG1.X = 7;
 - tmpPG1.Y = 8;
 - tmpPG1.Z = 9;
 - Console.WriteLine(tmpPG1);
 - Console.WriteLine(tmpPG3);
 - Console.ReadLine();
 - }
 - }
 - }
 
                文章题目:C#类和结构简单介绍
                
                本文链接:http://www.csdahua.cn/qtweb/news13/19613.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网