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

我对命名空间的一些想法

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


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

生成一下
 
大家会说HttpUtility不是明明在using System.Web;下面吗?我都引用了怎么还报错。
这种情况其实很常见,原因就是我们只引用的命名空间,但并没有添加引用。
因为在Cs项目 中默认的是不加载using System.Web;这个命名空间的。
所以我们要手动的添加一个引用才可以
方法如下
 
找到这个命名空间
 
然后这时再引用一下就行了
 
这样就可以使用这两个方法了。
所以并不是Cs下的类库不能被Bs调用,而是我们没有导入命名空间的问题。这点大家一定要注意哦
3. 命名空间之间的类或者是对象是相对独立
这一点我就不过多的说了,因为大家都知道在不同的名命名空间里呀类名是可以重复的。只要在引用时使用不同的命名空间名称进行区分就行了
4. 命名空间是可以用别名
这一点我想以一个例子来说明
看下面代码
NameClass类
[C#]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
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#]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
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#]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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();
         }
     }
}

执行后如下
 
好了这一个例子什么都说明了。说明是可以起别名的
我个人认为了解到这些基本上就够了。其他 的可以在学习和工作中逐步的去深入
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值