[C#基语法]之C#命名空间(namespace)
来源:互联网 发布:淘宝香水店铺推荐 知乎 编辑:程序博客网 时间:2024/06/06 12:49
[C#基语法]苏飞传奇版 http://www.sufeinet.com/thread-3091-1-1.html
我对命名空间的一些想法
说到这个,我相信只要有点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();
}
}
}
问:在命名空间中定义的元素无法显示的声明为private?
答:
命名空间内只能包含public或者internal的类定义,结构定义,接口定义等,如果没有指定,默认是internal。 protected表示存取限制于包含此定义的类或者继承类,命名空间是不可能继承的,所以protected用于命名空间内的定义是无意义的。而protected可以用于嵌套类,比如下面的代码是正确的。
namespace N1
{
class C1
{
protected class C2
{
}
}
}
问:生成、重新生成、清理的的关系
vs ide一个解决方案是可以加入多个项目的,如果当前解决方案只有一个项目,执行项目“生成/重新生成/清理”和解决方案“生成/重新生成/清理”是一样的,当有多个项目时选择解决方案的“生成/重新生成/清理”对解决方案下的项目都有效,如果选择了“清理”所有的项目都会被清理,要是不想全部清理就要单独选择要清理的项目进行“清理”操作,“生成/重新生成”也是一样的,不过要注意的是选择生成解决方案并不一定是工程编译想要的顺序,有库链接时可能会报错误。生成:如果工程没有编译过就全部编译,已经编译过了只对修改过的有关内容进行编译,重新生成:就是先清理一次对所有文件进行编译。清理:把编译器编译出来的文件都清理掉包括可执行文件链接库。
问:类库添加引用,using的具体操作细节
答:添加引用就是将对应的类库和项目program.cs放在一个文件夹里面。然后指向 1.放 2指向
这个才能以namespace.classA.method()的方式来访问成员函数。考虑进一步简化,此时才使用using namespace
更简洁的使用 classA.mehod()方式来访问了
问:并非所有的代码路径都有返回值
答:定义返回指定函数时,如果用到if else 或者try catch,在出现多个情况的下都要保证有return;不然就会出现以上的错误
问:动态加载dll 和引用dll的区别
答:如果说区别,就是有些时候应用程序根本不可能预先知道需要访问的DLL,所以无法引用。
例如你写一个”快递单处理流程“软件,但是你不知道到底有几百种快递单,你可以在你的程序中写一个通用的快递单的接口(从中可以读取布局的模式信息,例如读取BitImage类型的底图,读取各个业务数据的文本框的坐标位置,等),并且写两种具体的快递单作为测试。
可是实际使用时,另外有198种快递单,怎么办?这就需要用一个配置文件,将其它快递单”应该从哪一个名称的DLL中的什么类型(显然全都实现了你的接口)取得“信息一一列出来,这样才能让你的程序真正发挥价值。
这种扩展设计,可能就需要动态加载DLL。
因此这取决你是懂设计的人,还是不懂设计的人。
没有必要动态加载DLL的时候,我们当然去动态调用它,而应该直接在工程中引用它。只有在必要的时候才动态加载DLL。
问:新建一个项目后,生成dll文件,调用的方式
答:可以添加---现有项---dll的项目文件添加,可以直接调用;另一种就是调用dll,添加-----引用---XXX.dll
问:引用正常的前提下,没有using时,如何using
答:ctrl+.
0 1
- [C#基语法]之C#命名空间(namespace)
- [C#基语法]之C#命名空间(namespace)
- C#命名空间namespace详解
- C# 命名空间(Namespace)
- C#梳理【命名空间namespace】
- C# 命名空间 (Namespace)
- C# 命名空间(NameSpace)
- C# 参考之命名空间关键字:namespace、using
- C# 参考之命名空间关键字:namespace、using
- C#中命名空间关键字:namespace、using
- C#命名空间(namespace)学习
- C# 系列之命名空间
- C#的那些事(二)命名空间 namespace
- C#名称空间--namespace
- C++之namespace命名空间
- namespace命名空间-之使用
- 新手入门之 Visual C#命名空间详解
- c#学习笔记之命名空间
- Android中获取联系人列表
- (一)Python字符串格式化
- 57. web 攻击技术
- 文件通配符中大小写匹配问题?
- Linux下常用轻量级队列服务比较
- [C#基语法]之C#命名空间(namespace)
- [leetcode]328. Odd Even Linked List [medium]
- php源码之路第三章第二节( 常量)
- 第四天学习数据结构,完成一半的逆波兰表达式
- 大型网站架构之分布式消息队列
- struts2基础学习总结
- 17. Letter Combinations of a Phone Number
- jQuery最简单的留言功能^-^
- c#学习 11/22 里式转换与常用类的使用