c# 名称空间问题

annwatasi 2013-05-23 03:35:04
c#:注意不允许在另一个嵌套的名称空间中声明多部分的名称空间

请问高手,这句怎么理解?
...全文
295 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
F15Eagle 2013-05-24
  • 打赏
  • 举报
回复
没仔细看上面的内容啊,我大致猜到猜楼主看的所谓破书是《C#高级编程2008》,哈哈。 看书很细,这很好,但是不能太纠结啊。 这个话当时我也纠结了,好多朋友还一起分析了,汗啊,其实这个是.net 1.1时代的一个问题,multipart namespace其实就是指的MyNamespace1.MyNamespace2这样的写法,没必要纠结了,因为现在这一条已经不会出问题了,2.0的时候应该编译就不会出问题了。这破书出的太早,有些内容没有做改动和调整,不能与时俱进而已了。 具体参考下面的网站好了(就是wrox的),英文的但还比较好懂,我是看完就不纠结了啊。 http://p2p.wrox.com/c-2005/56590-about-namespace.html。 以下是当时我的记录,注意其中下划线的那两句: 解答来自www.wrox.com的论坛,网址http://p2p.wrox.com/c-2005/56590-about-namespace.html 用户: Hello!Expert.I am learning about C Sharp.I bought a book from bookshop.The book's name is <<Professional C#, 3rd Edition>>.As a result,I have faced a lot of difficulties.Now I want to asked a question.What is the mean of the book's sentence?The sentence is at Page 58,it is "Note that we are not permitted to declare a multi-part namespace nested within another namespace."Please give me a example(Code).Thank you! 专家: It appears the book in question is based on .Net 1.1. What they are saying is: You CAN do this: namespace Cheese { namespace MoreCheese { } } But you can NOT do this: namespace Cheese { namespace Stinky.Cheese { } } If you try to compiled the second one in 1.1 you get this error: error CS0134: Cannot use qualified namespace names in nested namespace declarations THIS ONLY APPLIES TO .NET 1.1. .Net 2.0 DOES allow this. 用户: I make sure that the book is wrong! 专家: It would seem that the book is incorrect. It's also possible that when the book was written, MS hadn't made this change. Given the amount of time it takes to write a book, it's understandable that changes in the software could be made that affect the accuracy of the book.
  • 打赏
  • 举报
回复
有些写的抽象空洞,有些就是七拼八凑的,还是自己实践吧,实践出真知
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
如果你想做一点事情,就不要执著于“道理”,所谓的道理,只是大多数人的偏见而已。 就lz的问题来说,我不否认或许有人真的能搞清楚这句莫名其妙的话是什么意思(事实上,也就是自圆其说而已,真正谁理解了谁没有理解,无从验证,只有作者自己知道)。但是这样做的价值是什么呢?证明这本书是有帮助的好书?表示对作者前辈的尊敬?说明你是一个看书仔细的人?锻炼理解能力?我觉得这些理由偏离了你看这本书的动机,显得毫无必要。
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
引用 19 楼 a312100321 的回复:
[quote=引用 17 楼 caozhy 的回复:] [quote=引用 16 楼 a312100321 的回复:] [quote=引用 15 楼 caozhy 的回复:] 任何人写的书都不可能完全正确,像你这种钻牛角尖的看法,不是“只要有帮助的书就是好书”,而是“只要有纰漏的书都对于你来说是糟糕的书”,所以没有什么书适合你看,这就是我说“你学不会编程”。
我不是楼主。。。我觉得你说的“任何人写的书都不可能完全正确”,这句话很对,但是如果能在看完书的时候,找到它的错误,是不是也说明,我们看书有了收获了呢!我没有否定你的意思!可能我误解了你的意思。[/quote] 不见得。收获有大有小,找到错误和你从宏观上搞清楚你要学的东西的收获来说,微不足道。如果一本书找错误能让你“大有收获”,甚至比它传播的正面的信息还多的话,那这种书不如不看。而且找到错误,未必就离真理更近。 尤其是初学者,更应避免被误导。[/quote]有点儿偏激,但是我觉得你说的句句在理,这个只能说,我们站的出发点或者角度不一样。毕竟文字这东西,不同的人读出来,理解也不尽相同。[/quote] 看问题要看主流,比如说,前些日子讨论很热烈的校车问题。如果你单单说,那些非法校车超载,是不是很可恶,是不是应该被禁止,很多人都说应该。可是,在经济落后的地区,取缔校车的结果是,把责任推给了家长,而家长的驴车、三轮安全性更低。道德家们认为,赚钱的学校不幸因为非法校车让孩子伤亡了十恶不赦,但是只要孩子死活是他家长的责任,那么哪怕出事的概率更高,也没有话说,这样的观点看似有理,实际上毫无建设性。
燕雀之志 2013-05-24
  • 打赏
  • 举报
回复
引用 17 楼 caozhy 的回复:
[quote=引用 16 楼 a312100321 的回复:] [quote=引用 15 楼 caozhy 的回复:] 任何人写的书都不可能完全正确,像你这种钻牛角尖的看法,不是“只要有帮助的书就是好书”,而是“只要有纰漏的书都对于你来说是糟糕的书”,所以没有什么书适合你看,这就是我说“你学不会编程”。
我不是楼主。。。我觉得你说的“任何人写的书都不可能完全正确”,这句话很对,但是如果能在看完书的时候,找到它的错误,是不是也说明,我们看书有了收获了呢!我没有否定你的意思!可能我误解了你的意思。[/quote] 不见得。收获有大有小,找到错误和你从宏观上搞清楚你要学的东西的收获来说,微不足道。如果一本书找错误能让你“大有收获”,甚至比它传播的正面的信息还多的话,那这种书不如不看。而且找到错误,未必就离真理更近。 尤其是初学者,更应避免被误导。[/quote]有点儿偏激,但是我觉得你说的句句在理,这个只能说,我们站的出发点或者角度不一样。毕竟文字这东西,不同的人读出来,理解也不尽相同。
laipihu 2013-05-24
  • 打赏
  • 举报
回复
引用
居然是合法的,从来没用过,呵呵
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
引用 16 楼 a312100321 的回复:
[quote=引用 15 楼 caozhy 的回复:] 任何人写的书都不可能完全正确,像你这种钻牛角尖的看法,不是“只要有帮助的书就是好书”,而是“只要有纰漏的书都对于你来说是糟糕的书”,所以没有什么书适合你看,这就是我说“你学不会编程”。
我不是楼主。。。我觉得你说的“任何人写的书都不可能完全正确”,这句话很对,但是如果能在看完书的时候,找到它的错误,是不是也说明,我们看书有了收获了呢!我没有否定你的意思!可能我误解了你的意思。[/quote] 不见得。收获有大有小,找到错误和你从宏观上搞清楚你要学的东西的收获来说,微不足道。如果一本书找错误能让你“大有收获”,甚至比它传播的正面的信息还多的话,那这种书不如不看。而且找到错误,未必就离真理更近。 尤其是初学者,更应避免被误导。
燕雀之志 2013-05-24
  • 打赏
  • 举报
回复
引用 15 楼 caozhy 的回复:
任何人写的书都不可能完全正确,像你这种钻牛角尖的看法,不是“只要有帮助的书就是好书”,而是“只要有纰漏的书都对于你来说是糟糕的书”,所以没有什么书适合你看,这就是我说“你学不会编程”。
我不是楼主。。。我觉得你说的“任何人写的书都不可能完全正确”,这句话很对,但是如果能在看完书的时候,找到它的错误,是不是也说明,我们看书有了收获了呢!我没有否定你的意思!可能我误解了你的意思。
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
任何人写的书都不可能完全正确,像你这种钻牛角尖的看法,不是“只要有帮助的书就是好书”,而是“只要有纰漏的书都对于你来说是糟糕的书”,所以没有什么书适合你看,这就是我说“你学不会编程”。
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
引用 12 楼 annwatasi 的回复:
[quote=引用 10 楼 caozhy 的回复:] [quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote] 嗯,我确实不是高手,但是我可不信,你是凭空就会的,你不也是从看书开始的吧,只要有帮助的书就是好书,你这么蔑视前辈的书,说明你极度自负。 以上,表达你对教材的说法的不同意之意,如看后不适,请略过。[/quote] 书好不好我也不知道,我也不关心,我就事论事说你引用的书上的这句话,在我看来就是一句误导人的没用的话。
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
引用 11 楼 a312100321 的回复:
[quote=引用 10 楼 caozhy 的回复:] [quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote]我觉得你这样说别人学不好编程的观点要改改。书可以引导你去思考,你不能完全否定。[/quote]
引用 11 楼 a312100321 的回复:
[quote=引用 10 楼 caozhy 的回复:] [quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote]我觉得你这样说别人学不好编程的观点要改改。书可以引导你去思考,你不能完全否定。[/quote]
引用 11 楼 a312100321 的回复:
[quote=引用 10 楼 caozhy 的回复:] [quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote]我觉得你这样说别人学不好编程的观点要改改。书可以引导你去思考,你不能完全否定。[/quote] 就是这观点,改不了。怎么办?
annwatasi 2013-05-24
  • 打赏
  • 举报
回复
引用 10 楼 caozhy 的回复:
[quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote] 嗯,我确实不是高手,但是我可不信,你是凭空就会的,你不也是从看书开始的吧,只要有帮助的书就是好书,你这么蔑视前辈的书,说明你极度自负。 以上,表达你对教材的说法的不同意之意,如看后不适,请略过。
燕雀之志 2013-05-24
  • 打赏
  • 举报
回复
引用 10 楼 caozhy 的回复:
[quote=引用 9 楼 annwatasi 的回复:] 原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。[/quote]我觉得你这样说别人学不好编程的观点要改改。书可以引导你去思考,你不能完全否定。
threenewbee 2013-05-24
  • 打赏
  • 举报
回复
引用 9 楼 annwatasi 的回复:
原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。 [quote=引用 8 楼 caozhy 的回复:] 你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
[/quote] 所以你学不会编程。
annwatasi 2013-05-24
  • 打赏
  • 举报
回复
原来大部分人都没理解呀。嗯,我只是觉得有人会理解,所以开个帖子。话说,你说的破书惊到我了,真是好无理的描述。书还是很好的。
引用 8 楼 caozhy 的回复:
你学习的应该是C#,而不是什么破书上的话,我告诉你,我也不知道这句话是什么意思,正因为如此,我认为你理解或者不理解,是无关紧要的。 按照我的理解,是这样的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    namespace A
    {
        namespace B.C
        {
            class Program
            {
                static void Main(string[] args)
                {
                    ConsoleApplication1.A.B.C.Program p;
                }
            }
        }
    }
    namespace E
    {
        namespace F.G
        {
            class Test { }
        }
    }
}
但是它完全是合法的。
裸奔在上海 2013-05-24
  • 打赏
  • 举报
回复
只要是人,就会犯错,而且现在很多书都是东拼西凑的,还有很多翻译的,由于译者不懂专业术语导致歧义发生的事情也很多。 如果你英文还可以,学习C#最好的去处就是MSDN,每个人思考的角度不同,思路不同描述就会有差别。
小松618 2013-05-23
  • 打赏
  • 举报
回复
引用 2 楼 laipihu 的回复:
一个项目只能有一个,估计你从别的地方拷过来的文件,改下命名空间就可以了
记着这个就行了 没什么其他的特别的意思
annwatasi 2013-05-23
  • 打赏
  • 举报
回复
引用 5 楼 laipihu 的回复:

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;

namespace 试验
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }
}
那个试验就是命名空间,这个项目所有的命名空间都叫试验
我觉得你没有理解我的意思。我明白名称空间的用法和意义,我只是对“注意不允许在另一个嵌套的名称空间中声明多部分的名称空间”这句话不能理解,求解释而已。
laipihu 2013-05-23
  • 打赏
  • 举报
回复

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;

namespace 试验
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }
}
那个试验就是命名空间,这个项目所有的命名空间都叫试验
加载更多回复(3)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧