教学-44 命名空间和装箱拆箱

Posted 泮聪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教学-44 命名空间和装箱拆箱相关的知识,希望对你有一定的参考价值。

曾英-C#教学-44 命名空间和装箱拆箱

目录

  • 1\认识命名空间,学习如何定义使用命名空间
  • 2\学习如何使用帮助
  • 3\理解装箱和拆箱操作

1\命名空间

  • 以下都是.Net内部定义的命名空间
using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
namespace是自己定义的

namespace _44_命名空间

  

1.1\namespace

  • 如果没有定义不同的命名空间的话,在出现相同类的时候会出错.
  • 命名空间可以区分各种累进入不同的类(或者同名的类)进入不同的命名空间

程序实例:

调用不同命名空间中的类的方法:

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    
    //类库
    namespace _44_命名空间
    {
        class Program
        {
            static void Main(string[] args)
            {
                //引用别的命名空间的类的方法:
                //在类名前添加一个命名空间的名字
                A.Bird f1 = new A.Bird();
                f1.Fly(); //输出结果:A小鸟飞.
    
    
                //引用B命名空间的方法:
                B.Bird f2 = new B.Bird();
                f2.Fly();//输出结果:B小鸟飞.
            }
        }
    }
    
    
    //类库
    namespace A
    {
        class Bird
        {
            public void Fly()
            { Console.WriteLine("A小鸟飞"); }        
        }
    }
    
    namespace B
    {
        class Bird
        {
            public void Fly()
            { Console.WriteLine("B小鸟飞"); }
        }
    
    
    }

  

1.2\没有命名空间的时候的处理方法

程序实例:

//using System; //这里using System被注释了
    
    /*using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    */
    namespace _44_2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //主函数中每一个方法的前面都需要增加一个System.xxx来实现调用系统方法.
                double a = 4;
                double b = System.Math.Sqrt(a);
                System.Console.WriteLine(b);
                string cc = System.Console.ReadLine();
                int d = System.Convert.ToInt32(b);
            }
        }
    }

  

1.3\多种命名空间

技术分享图片

1.4\嵌套类型命名空间的调用

using System;
    namespace _44_3_命名空间
    {
        class Program
        {
            static void Main(string[] args)
            {
                //定义的时候要将两个命名空间依次写出
                A.AA.bird f1=new A.AA.bird();
                f1.Fly();
                
    
            }
        }
    }
    //这里套用了两层命名空间.
    namespace A
    {
        namespace AA
        {
            class bird
            {
                public void Fly()
                { Console.WriteLine("a小鸟飞"); }
            
            }
        }
        namespace AB
        { }
    }

  

2\使用帮助

msdn

3\装箱和拆箱

  • C#的类型分为值类型和引用类型,

  • 值类型:装箱前n的值存储在栈中,

  • 引用类型:装箱后n的值被封装到堆中.

  • 这里,什么类型都能赋给object型.但是会损失性能.

  • 这里用object类来进行装箱操作

程序实例:

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    //这里如果添加一个 using Ct,主函数中定义的时候就不需要写 Ct.Storehouse store = new Ct.Storehouse(5);中的Ct.
    namespace _44_装拆箱
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Ct.Storehouse store = new Ct.Storehouse(5);
                //可以使用各种类型
                store.Add(100);
                store.Add(2.14);
                store.Add("good");
                store.Add(new Ct.Storehouse(5));
    
    
                //遍历
                //这里是装箱操作,将多种数据类型都用object类型.
                foreach (object item in store.Items)
                { Console.WriteLine(item); }
     
            }
        }
    }
    
    namespace Ct
    {
        class Storehouse
        { 
            //object型数组,可以存储各种类型数据
            public Object[] Items;
            private int count;
    
            //这里用count为数组计数
            public Storehouse(int size)
            {
                //数组的初始化
                Items = new Object[size];
                count = 0;
            }
            //数组中添加数据
            //为Items添加数据,并判断数组是否溢出
            public void Add(Object obj)
            {
                if (count < Items.Length)
                {
                    Items[count] = obj;
                    count++;
                }
                else Console.WriteLine("仓库已满");
            }
            
            
        }
    
    }

  

以上是关于教学-44 命名空间和装箱拆箱的主要内容,如果未能解决你的问题,请参考以下文章

C#中的装箱和拆箱的简单理解

装箱与拆箱

自动装箱拆箱

java 啥是拆箱和装箱,拆箱和装箱 嘛用啊???

装箱和拆箱---JAVA基础篇

iOS小技能:装箱和拆箱(boxingunboxing)