有没有办法为:
创建缩写或自定义类名Dictionary<string,Dictionary<int,myClass>>
我可以创建
class DD
{
public Dictionary<string,Dictionary<int,myClass>> wDD;
}
但是当我使用它时我不得不说:
DD.wDD wrkVar = new DD.wDD();
而不是
DD wrkVar = new DD();
有没有办法让DD
直接引用
Dictionary<string,Dictionary<int,myClass>>
编辑 - 根据以下回复显示解决方案
我到达了这个,有效:
using DBDDict =
System.Collections.Generic.Dictionary<string,
System.Collections.Generic.Dictionary<int, DDRow>>;
public class CustomClassTest
{
public static void Test4()
{
DDRow wrkRow = new DDRow();
wrkRow.ColumnName = "ABC";
Dictionary<int, DDRow> wrkRowD = new Dictionary<int, DDRow>();
wrkRowD.Add(1, wrkRow);
DBDDict wrkDD = new DBDDict();
wrkDD.Add("key", wrkRowD);
}
}
AND,这样做也更容易使用(注意“使用”已被注释掉)。
//using DBDDict = System.Collections.Generic.Dictionary<string, System.Collections.Generic.Dictionary<int, DDRow>>;
public class DD : Dictionary<string, Dictionary<int, DDRow>> {}
public class CustomClassTest
{
public static void Test4()
{
DDRow wrkRow = new DDRow();
wrkRow.ColumnName = "ABC";
Dictionary<int, DDRow> wrkRowD = new Dictionary<int, DDRow>();
wrkRowD.Add(1, wrkRow);
DD wrkDD = new DD();
wrkDD.Add("key", wrkRowD);
}
}
答案 0 :(得分:5)
您可以在源文件中创建一个别名,如下所示:
using FancyDic = System.Collections.Generic.Dictionary<string,System.Collections.Generic.Dictionary<int,myClass>>;
但是,必须在要使用'FancyDic'别名的每个代码文件中重复这一过。
虽然声明了这个,但您可以按如下方式创建新对象:
var newDic = new FancyDic();
答案 1 :(得分:4)
您可以在名称空间外使用名为using alias directive的using
语句使用别名,通常在每个文件中使用声明放置:
using System; // etc.
using DD = System.Collections.Generic.Dictionary<string, System.Collections.Generic.Dictionary<int, MyNameSpace.MyClass>>;
然后进行实例化,
public void SomeVoid()
{
var dd = new DD();
}
变量dd现在正是您设置using
别名的原因:
using alias directive
。答案 2 :(得分:1)
继承您正在“别名”的类型
public class DD : Dictionary<string,Dictionary<int,myClass>> { }
答案 3 :(得分:0)
不,没有办法“缩短”班级宣言和BTW,这......
Dictionary<string,<Dictionary<int,myClass>>
无法编译,您需要将其更改为...
Dictionary<string,Dictionary<int,myClass>>
此外,这......
DD.wDD wrkVar = new DD.wDD();
将无法编译,因为无法使用构造函数语法调用wDD公共字段。此,
DD wrkVar = new DD();
wrkVar.wDD;
是访问该公共字段的正确方法。您可以通过继承该字典来“缩短”类实例化而不是类声明...
public class DD : Dictionary<string,Dictionary<int,myClass>>
{
}
DD d = new DD();
d.Add("key", new Dictionary<int,myClass>());