我对命名空间的一些想法
说到这个,我相信只要有点C#基础的人都会很清楚的说,这个我知道,这个我理解。这个不就是一个命名空间吗?用Java程序员的话说就是一个包名。
如果您真的认同以上说法那我以不幸的告诉你,你还真应该深入学习一下了。
我提几点大家看看有没有道理
1.命名空间的定义是有一个规范的。不是随便起的。 详细的等下再说
2.命名空间的导入是与添加引用息息相关的。
3.命名空间之间的类或者是对象是相对独立的。
4.命名空间是可以用别名的。
这些不知道大家知道吗?
下面我一个一个的来分析一下
1. 命名空间的定义是有一个规范的。不是随便起的。
这个名字可不是乱起的,是要有一定规范的,那有人会问乱起呢,乱起当然不会影响程序执行,但是你的程序会变的很可怕。
这里我给大家提个醒,给一些类分配命名空间时一定要让他们有相同之处才可以分在一起
2. 命名空间的导入是与添加引用息息相关的
有时候我们会发现在引用一个命名空间之后是无效的,还是提示没有导入相应的命名空间,比如我们在Winform下写了这样一个方法
生成一下
大家会说HttpUtility不是明明在using System.Web;下面吗?我都引用了怎么还报错。
这种情况其实很常见,原因就是我们只引用的命名空间,但并没有添加引用。
因为在Cs项目 中默认的是不加载using System.Web;这个命名空间的。
所以我们要手动的添加一个引用才可以
方法如下
找到这个命名空间
然后这时再引用一下就行了
这样就可以使用这两个方法了。
所以并不是Cs下的类库不能被Bs调用,而是我们没有导入命名空间的问题。这点大家一定要注意哦
3. 命名空间之间的类或者是对象是相对独立的
这一点我就不过多的说了,因为大家都知道在不同的名命名空间里呀类名是可以重复的。只要在引用时使用不同的命名空间名称进行区分就行了
4. 命名空间是可以用别名的
这一点我想以一个例子来说明
看下面代码
NameClass类
Blogs类代码如下
主程序代码如下
执行后如下
好了这一个例子什么都说明了。说明是可以起别名的
我个人认为了解到这些基本上就够了。其他 的可以在学习和工作中逐步的去深入
说到这个,我相信只要有点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);
}
|
生成一下
![](https://i-blog.csdnimg.cn/blog_migrate/058402bc25caf4f68ebeefb7ecabd6ed.jpeg)
大家会说HttpUtility不是明明在using System.Web;下面吗?我都引用了怎么还报错。
这种情况其实很常见,原因就是我们只引用的命名空间,但并没有添加引用。
因为在Cs项目 中默认的是不加载using System.Web;这个命名空间的。
所以我们要手动的添加一个引用才可以
方法如下
![](https://i-blog.csdnimg.cn/blog_migrate/468ee9296e6d62100d5357e4e665188d.jpeg)
找到这个命名空间
![](https://i-blog.csdnimg.cn/blog_migrate/2cef05362a03bf88f6822a403da94c7c.jpeg)
然后这时再引用一下就行了
![](https://i-blog.csdnimg.cn/blog_migrate/ac4f18977f75eb113c1f19309f6a7bff.jpeg)
这样就可以使用这两个方法了。
所以并不是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();
}
}
}
|
执行后如下
![](https://i-blog.csdnimg.cn/blog_migrate/5393d7e437f49b07ebf268e6a6aa24bd.jpeg)
好了这一个例子什么都说明了。说明是可以起别名的
我个人认为了解到这些基本上就够了。其他 的可以在学习和工作中逐步的去深入