zoukankan      html  css  js  c++  java
  • 总结:CLR Via C#(第五章):值类型与引用类型——装箱和拆箱

    struct

     class Program

        {

            static void Main(string[] args)

            {

                Point p = new Point(1, 1);

                Console.WriteLine(p);

     

                p.Change(2, 2);

                Console.WriteLine(p);

     

                object o = p;

                Console.WriteLine(o);

     

                ((Point)o).Change(3, 3);

                Console.WriteLine(o);

     

                p = (Point)o;

                p.Change(3, 3);

                Console.WriteLine(p);

            }

        }

     

        internal struct Point

        {

            Int32 m_x, m_y;

     

            public Point(Int32 x, Int32 y)

            {

                m_x = x;

                m_y = y;

            }

     

            public void Change(Int32 x, Int32 y)

            {

                m_x = x;

                m_y = y;

            }

     

            public override string ToString()

            {

                return string.Format("({0},{1})", m_x, m_y);

            }

        }

             输出:

     

    Class

    如果将Point改为Class类型,则输出:


     

    Interface

        class Program

        {

            static void Main(string[] args)

            {

                Point p = new Point(1, 1);

                Console.WriteLine(p);

     

                p.Change(2, 2);

                Console.WriteLine(p);

     

                object o = p;

                Console.WriteLine(o);

     

                ((Point)o).Change(3, 3);

                Console.WriteLine(o);

     

                p = (Point)o;

                p.Change(3, 3);

                Console.WriteLine(p);

     

     

                ((IChangeBoxedPoint)p).Change(4, 4);

                Console.WriteLine(p);

     

                ((IChangeBoxedPoint)o).Change(5, 5);

                Console.WriteLine(o);

     

                Console.ReadLine();

            }

        }

     

        internal interface IChangeBoxedPoint

        {

            void Change(Int32 x, Int32 y);

        }

     

        internal struct Point:IChangeBoxedPoint

        {

            Int32 m_x, m_y;

     

            public Point(Int32 x, Int32 y)

            {

                m_x = x;

                m_y = y;

            }

     

            public void Change(Int32 x, Int32 y)

            {

                m_x = x;

                m_y = y;

            }

     

            public override string ToString()

            {

                return string.Format("({0},{1})", m_x, m_y);

            }

        }

    输出:

     

  • 相关阅读:
    c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题
    c++ 网络编程(三) LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现
    c++ 网络编程(二) linux 下多进程socket通信 多个客户端与单个服务端交互代码实现回声服务器
    c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
    c++ MFC图像处理CImage类常用操作代码
    vue 模板语法
    占位1
    MongoDB
    Node.js fs-文件系统
    nodeJs 常用模块(一)
  • 原文地址:https://www.cnblogs.com/LeimOO/p/1639096.html
Copyright © 2011-2022 走看看