苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 21881|回复: 20

[C#基语法] [C#基语法]之C#命名空间(namespace)

[复制链接]
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

    发表于 2013-7-24 10:00:46 | 显示全部楼层 |阅读模式
              [C#基语法]之C#命名空间(namespace)
    系列文章导航

      [C#基语法]苏飞传奇版   http://www.sufeinet.com/thread-3091-1-1.html

    我对命名空间的一些想法

           说到这个,我相信只要有点C#基础的人都会很清楚的说,这个我知道,这个我理解。这个不就是一个命名空间吗?用Java程序员的话说就是一个包名。
          如果您真的认同以上说法那我以不幸的告诉你,你还真应该深入学习一下了。
    我提几点大家看看有没有道理
    1.命名空间的定义是有一个规范的。不是随便起的。 详细的等下再说
    2.命名空间的导入是与添加引用息息相关的。
    3.命名空间之间的类或者是对象是相对独立的。
    4.命名空间是可以用别名的。


    这些不知道大家知道吗?
    下面我一个一个的来分析一下
    1.命名空间的定义是有一个规范的。不是随便起的。
    这个名字可不是乱起的,是要有一定规范的,那有人会问乱起呢,乱起当然不会影响程序执行,但是你的程序会变的很可怕。
    这里我给大家提个醒,给一些类分配命名空间时一定要让他们有相同之处才可以分在一起
    2.命名空间的导入是与添加引用息息相关的
    有时候我们会发现在引用一个命名空间之后是无效的,还是提示没有导入相应的命名空间,比如我们在Winform下写了这样一个方法
    [C#] 纯文本查看 复制代码
            public static string URLDecode(string text)
            {
                return HttpUtility.UrlDecode(text, Encoding.Default);
            }
            public static string URLEncode(string text)
            {
                return HttpUtility.UrlEncode(text, Encoding.Default);
            }
    

    生成一下
    QQ截图20130724093537.jpg
    大家会说HttpUtility不是明明在using System.Web;下面吗?我都引用了怎么还报错。
    这种情况其实很常见,原因就是我们只引用的命名空间,但并没有添加引用。
    因为在Cs项目 中默认的是不加载using System.Web;这个命名空间的。
    所以我们要手动的添加一个引用才可以
    方法如下
    QQ截图20130724093759.jpg
    找到这个命名空间
    QQ截图20130724094207.jpg
    然后这时再引用一下就行了
    QQ截图20130724094232.jpg
    这样就可以使用这两个方法了。
    所以并不是Cs下的类库不能被Bs调用,而是我们没有导入命名空间的问题。这点大家一定要注意哦
    3.命名空间之间的类或者是对象是相对独立
    这一点我就不过多的说了,因为大家都知道在不同的名命名空间里呀类名是可以重复的。只要在引用时使用不同的命名空间名称进行区分就行了
    4.命名空间是可以用别名
    这一点我想以一个例子来说明
    看下面代码
    NameClass类
    [C#] 纯文本查看 复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Names
    {
        /// <summary>
        /// 操作姓名的类
        /// </summary>
        public class NameClass
        {
            public string GetName()
            {
                return "苏飞";
            }
        }
    }
    

    Blogs类代码如下
    [C#] 纯文本查看 复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Blogs
    {
        /// <summary>
        /// 博客地址操作类
        /// </summary>
        public class BlogClass
        {
            public string GetBlog()
            {
                return "http://wwww.sufeinet.com";
            }
        }
    }
    

    主程序代码如下
    [C#] 纯文本查看 复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Web;
    using b = Blogs;//这种方是将命名空间起个别名,我猜这里肯定有人没使用过
    using n = Names;
    
    namespace NamespaceTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                n.NameClass name = new n.NameClass();
                b.BlogClass blog = new b.BlogClass();
    
                richTextBox1.Text = "我的姓名:" + name.GetName() + "\r\n";
                richTextBox1.Text += "我的博客:" + blog.GetBlog();
            }
        }
    }
    

    执行后如下
    QQ截图20130724095036.jpg
    好了这一个例子什么都说明了。说明是可以起别名的
    我个人认为了解到这些基本上就够了。其他 的可以在学习和工作中逐步的去深入
    NamespaceTest.zip (52.39 KB, 下载次数: 512)

    本帖被以下淘专辑推荐:

    该用户从未签到

    发表于 2013-7-24 10:44:45 | 显示全部楼层
    学习了,支持站长,支持sufeinet

    点评

    谢谢  发表于 2013-7-24 10:46

    该用户从未签到

    发表于 2013-7-24 10:45:27 | 显示全部楼层
    沙发没坐上,{:soso__2376168987366222283_3:}
    感谢楼主。支持你

    该用户从未签到

    发表于 2013-10-1 16:06:44 | 显示全部楼层
    没见过。。学习了

    该用户从未签到

    发表于 2013-10-2 16:13:20 | 显示全部楼层
    老大,请问一下,我想用 CreateObjRef 这个函数,为什么在form1.cs里面可以使用,在自己生成.CS就不可以使用呢?  也按照你在上面的方法试了,还是不行~~~
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-10-6 14:35:15 | 显示全部楼层
    我爱苏飞 发表于 2013-10-2 16:13
    老大,请问一下,我想用 CreateObjRef 这个函数,为什么在form1.cs里面可以使用,在自己生成.CS就不可以使 ...

    求助问题可以另发帖子,不能使用详细说一下,是什么情况报的什么错,不能使用这个太广泛了吧,无法定位问题

    该用户从未签到

    发表于 2013-10-9 13:36:39 | 显示全部楼层
    很好很强大

    该用户从未签到

    发表于 2013-11-10 18:47:41 | 显示全部楼层
    继续学习,希望能赶快把 接口 的内容给补充上,一直搞不懂接口
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-11-10 20:27:48 | 显示全部楼层
    abc 发表于 2013-11-10 18:47
    继续学习,希望能赶快把 接口 的内容给补充上,一直搞不懂接口

    很快就写,最近忙更新的太慢了
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1 )

    GMT+8, 2018-12-13 07:27

    © 2017-2018

    快速回复 返回顶部 返回列表