教学-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("仓库已满");
            }

        }

    }

  

原文地址:https://www.cnblogs.com/pancong-520/p/8401407.html

时间: 2024-11-10 05:54:42

教学-44 命名空间和装箱拆箱的相关文章

Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口

Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个I

NET中的类型和装箱/拆箱原理

谈到装箱拆箱,DebugLZQ相信给位园子里的博友一定可以娓娓道来,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么DebugLZQ建议你花点时间看看楼主这篇文章,继续前几篇博文的风格--浅谈杂侃. 1. .NET中的类型 为了说明装箱和拆箱,那首先必须先说类型.在.NET中,我们知道System.Object类型是所有内建类型的基类.注意这里说的是内建类型,程序员可以编写不继承子自System.Object的类型,这

[Java5新特性]自动装箱/拆箱

自动装箱/拆箱概述 Java中具有基本类型(int,double,float,long,boolean,char,byte,short)和基本类型包装类(Integer,Double,Float,Long,Boolean,Char,Byte,Short),我们实现基本类型与包装类之间的转换基本有两种方式: 一种为JDK5之前的方式,比如Integer i = Integer.valueof(5);(这里5为基本类型int,Integer包装类利用valueof()方法将其转换为Integer类型

C#装箱拆箱

.       装箱和拆箱是一个抽象的概念 2.       装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型        利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装箱的过程,是将值类型转换为引用类型的过程 int val = 100; object obj

Java 装箱 拆箱

Java 自动装箱与拆箱 ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; ) 实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = new Integer(1

读书笔记-C#中装箱拆箱性能

前言 最近在看王涛大神的<你必须知道的.NET(第二版)>一书,嗯,首先膜拜一下…. 在书中的第五章-品味类型中,对装箱与拆箱一节感触很深,概念本身相信每一个程序猿都不陌生,装箱是将值类型转换为引用类型 ,拆箱是将引用类型转换为值类型(ps:不小心又背了一下书),也知道装箱与拆箱过程中将带来性能上的问题,但是在实际的项目中往往会忽略这个问题,将可能带来极大的效率上的问题.问题有多大,反正我哭过. 简单对比测试 在工作之余写了个简单的测试例子,以HashTable.ArraryList.List

值类型&amp;引用类型,装箱&amp;拆箱

值类型:声明一个值类型变量,会在栈上分配一个空间,空间里存储的就是变量的值引用类型:声明一个引用类型变量,会在栈中分配一个空间,存储一个引用,这个引用指向了一个托管堆. 值类型:struct,枚举,数值类型,bool类型引用类型:数组,类,接口,委托(delegate),Object,string 可以看下下面的例子 public class Person { public string Name { get; set; } public int Age { get; set; } } publ

java自动装箱拆箱总结

对于java1.5引入的自动装箱拆箱,之前只是知道一点点,最近在看一篇博客时发现自己对自动装箱拆箱这个特性了解的太少了,所以今天研究了下这个特性.以下是结合测试代码进行的总结. 测试代码: int a = 1; Integer b = 1; Integer c = 1; Integer d = 2; Integer e = 3; Integer f = 128; Integer g = 128; Long h = 3L; Double m = 4.0; Double n = 4.0; Float

c#中装箱拆箱性能测试

c#中装箱拆箱性能测试 首先了解一下关于时间的换算: 1秒=1000毫秒: 1毫秒=1000微秒: 1微秒=1纳秒 而1毫秒=10000ticks:所以1ticks=100纳秒=0.1微秒 ticks这个属性值是指从0001年1月1日12:00:00开始到此时的以ticks为单位的时间,就是以ticks表示的时间的间隔数. 使用DateTime.Now.Ticks返回的是一个long型的数值. 然后上代码: using System; using System.Collections; usin