1

请在下面比较这些定义。第二个定义有什么问题?

我想在同一个命名空间中另一个类型的定义中使用 type1,我应该怎么做?

第一个定义:

namespace parent
{
    using type1 = Int16;

    namespace child
    {
    using list1 = List<type1>; //OK!
    }
}

第二个定义:

namespace sibling
{
    using type1 = Int16;
    using list1 = List<type1>; //error: the type or namespace 'type1' could not be found.
}

编辑:

using type1 = Int16;
using list1 = List<type1>; //error: the type or namespace 'type1' could not be found 

namespace myNameSpace
{
   using dic1 = Dictionary <int, list1>;
}
4

2 回答 2

2

您不能声明 using 语句并在同一块中使用它们。例如,试试这个:

using System;
using type1 = Int16;

namespace sibling
{
}

这会给你一个错误,指出 Int16 对于 type1 声明是未知的。将它移到命名空间内,一切都会好起来的。

于 2013-10-21T09:30:36.223 回答
0
using type1 = Int16;
namespace sibling
{

    using list1 = List<type1>;
}

继续在节点中回答您的问题...我真的不确定这种别名是否会获得更好的代码可读性。因此,假设您有以下情况。

namespace a
{
    using type1 = int16;
    namespace b
    {
          using list1 = List<int16>
          namespace c
          {
               var dictionary1 = Dictionary<type1, list1>
          }
    }
    using list1 = List<object>;
}

谁知道呢,这可能就是 C# 中禁止这样的 defs 的原因。

但是一些代码的可读性仍然可以通过 OOP 方法来实现。因此,例如,您的字典可以通过以下方式定义。

public class MyDictionary<T> : Dictionary<T, List<T>>
    {

    }

    class Program
    {
        static void Main(string[] args)
        {
            var test = new MyDictionary<int>();
        }
    }

在那之后,仍然有一种方法可以通过混叠来发挥创意。:)

于 2013-10-21T09:28:59.067 回答