| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 15755 人关注过本帖
标题:C#中的 命名空间, 类名, 文件名 都是啥关系?
取消只看楼主 加入收藏
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:12 
C#中的 命名空间, 类名, 文件名 都是啥关系?

求教:C#中的命名空间,类名,文件名都是啥关系?

为什么新建一个类,默认的命名空间就是那个项目文件夹的名称;类名就是那个cs文件的名称,可以修改吗修改后会怎么样?

拜谢 老师大侠 先!!!
搜索更多相关主题的帖子: 空间 新建 
2013-03-21 13:10
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用qq645485165在2013-3-21 13:57:04的发言:

举个例子,类就像“人类”一样,类下有方法,属性,字段,定义一个类就像假定一个人,方法就是这个人做某件事所要的方法,属性就是这个人所特有的性格,面貌等,字段可以封装成属性。cs是类空间名,cs文件名称就是类名称,可以修改,修改之后类名即class+类名也随之修改

感谢 qq645485165 的回复!!!

我这里的 “文件名”指 “解决方案”的名称(或 “解决方案文件名”),所以我的 问题是:

"命名空间"、 "类名"、 "解决方案文件名" 是啥关系?

关于“类”及类成员,我基本理解了。

谢谢 帮教老师
2013-03-21 14:33
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用yhlvht在2013-3-21 15:33:59的发言:

解决方案相当于一个项目,一个项目只有一个解决方案,对于Visual Studio来说,会建一个文件夹来保存这个解决方案,也会有一个同名文件用于加载这个解决方案
命名空间相当于一个项目中的模块,一个项目是有多个模块的,比如一个餐饮管理系统,会有菜单模块,点菜模块,服务员厨师这些的人员管理模块,收费模块,预订模块等等,当然你也可以全部放在一个模块里面,但这样做并不是一个好的主意,Visual Studio会在项目文件夹内,为每个模块,也就是命名空间,都创建文件夹.创建解决方案(项目)的时候,会默认创建一个模块,当然是同名的,因为Visual Studio也不知道你要什么名,这个命名空间名称是可以更改的,但请不要手工去改文件夹的名称,因为Visual Studio要加载这些东西,会创建配置文件关联这些文件夹以及文件,所以修改都请在项目的解决方案下边去修改,Visual Studio会自动更改关联的.
类是存在于模块里面的,也就是命名空间里面,Visual Studio会为类在命名空间的文件夹里面创建类文件,加载的时候,这个类才会加载到这个命名空间下面,同样不要手工修改文件名,还是在命名空间下面右键点这个类,然后修改.

非常感谢 yhlvht 老师 清晰 的 讲解指导!!!

再请教 yhlvht 老师:


1. 如何 查找到 Visual Studio 为 命名空间 (项目中的模块)创建的 “文件夹”?


好像添加的项目 - 类库,形成的是.cs类文件,而该类文件的 命名空间 没能找到,比如添加一个Person类文件,下面设三个命名空间:EuropePeople, AsiaPeople, AficaPeople, 这三个文件夹如何查找?


2. 一个.cs 文件 中 可以有 多个 命名空间吗?



无法上传图片,所以只能这样文字描述问题。
羡慕能上传图片的网友

再次感谢yhlvht 老师!!!

[ 本帖最后由 learnerok 于 2013-3-21 16:43 编辑 ]
2013-03-21 16:21
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用yhlvht在2013-3-21 17:01:29的发言:

添加命名空间,需要鼠标右键点击解决方案创建(添加新项目),通常是创建类库,创建的时候可以更改路径,默认就在该解决方案的文件夹内
右键点击创建的类库,也就是命名空间,选择添加->新建项,通常是创建类或是windows窗体,可以添加cs文件,路径默认在命名空间的文件夹内,路径不可修改
一个cs文件中,只能有一个命名空间

感谢 yhlvht 老师指导!!!

再请教您:

- 添加项目 生成 ".cs 文件",也就是添加了 “命名空间”?

- ".cs 文件"名称 在添加时 起名为 Person.cs, 编程时,将 “命名空间”名称改为:AsiaPeople,则该“.cs文件”应为“Person.cs”,对吗?

- 如果在Main()方法中调用“AsiaPeople命名空间”的 Work()方法,则如何引用?(偶也可以自己试一下,但还是想让老师讲解一下,惭愧!)
  如何 在 解决方案中(软件包)中 查找 命名空间为 “AsiaPeople”的文件夹,或者说VS中会为“AsiaPeople”命名空间自动生成一个文件夹吗?

感激yhlvht 老师指导!
2013-03-21 17:59
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
感激yhlvht 老师指导!!!!

“你要在解决方案中,查找命名空间的文件夹,右键点击命名空间,选择倒数第二项,在windows资源管理器中打开文件夹就可以找到这个命名空间的文件夹了”


请教yhlvht 老师:

“右键点击命名空间”--- 是在 编代码 上的 “命名空间”名称上(绿色字)上 “右键点击命名空间”吗?,其倒数第二项是“粘贴”。

谢谢yhlvht 老师!
2013-03-21 19:07
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用yhlvht在2013-3-21 19:10:15的发言:

是在解决方案的那个窗体里面的命名空间,就是你添加一个类的那地方
谢谢 yhlvht 老师!!!

再求教您:
1. 也就是说,如果添加了 Person.cs文件,手工在编代码上将命名空间修改为"AsiaPeople",则在“解决方案软件包”里是没有名称为“AsiaPeople”的命名空间文件夹 或 文件名的,对吗?

2. 而引用在"AsiaPeople"命名空间中的方法Work(),必须要加上AsiaPeople.Work(),而不是Person.Work()。

以上理解,对吗?

谢谢yhlvht 老师!
2013-03-21 19:52
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
十分感激 yhlvht 老师的 讲解指导!!!
2013-03-22 01:06
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
以下是引用yhlvht在2013-3-21 20:46:23的发言:

1 理解完全正确
2 调用方法,只是找到路径就对了,方法只能写在类中,肯定是 类名.方法名,不可能是 命名空间名.方法名,而类的全路径是 命名空间名.类名,所以调用方法为 命名空间名.类名.方法名,一般我们会在类中添加using 命名空间名,所以在类中只用写 类名.方法名

再请教 yhlvht老师:

1.关于12楼 的“如果添加了 Person.cs文件,手工在编代码上将命名空间修改为"AsiaPeople",”,这样更改命名空间的名称没有任何意义,对吗?因为引用该命名空间(AsiaPeople)中的方法Work(),是按 Person.Work()来引用的,对吗?

2. 那么 using 之后,如何写呢,using Person.AsiaPeople ?, 还是using Person ?

感谢yhlvht老师!!!
2013-03-22 13:30
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
谢谢 yhlvht 老师 耐心 讲解!!!

还不太明白。能用俺的12楼 和 15楼的 例子讲解吗,俺的迟钝脑袋好理解些。羞愧啊!

多谢您了!
2013-03-22 16:57
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
收藏
得分:0 
感谢 yhlvht 老师!!!

按照您的指导,俺写了代码:

步骤如下:

创建 解决方案:NameSpaceTest
创建 类库文件:Person.cs
在 Person.cs 编程序 里 - 更改 命名空间 名称 为:namespace AsiaPeople
在 Program.cs 编程序 里 - 添加:using AsiaPeople;(注:不添加这样命名空间,则在实例化Person类时,出现红线错误),并实例化Person类,调用Work()方法

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AsiaPeople
{
    class Person
    {
        public void Work()
        {
            Console.Write("工作快乐");
        }
    }
}

-------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AsiaPeople;

namespace NameSpaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.Work();
            Console.Read();
        }
    }
}
2013-03-22 21:04
快速回复:C#中的 命名空间, 类名, 文件名 都是啥关系?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016917 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved