在 Delphi 中你可以这样做:
TArray = array[1..3] of byte;
然后你可以在哪里声明
T2Array = array[1..3] of TArray
广告恶心...
.NET 中是否存在类似的东西? (vb、c# 等等)
我现在正在做这样的事情
Private LotsOfData As ObservableCollection(Of ObservableCollection(Of myClass))
但想做
Private LotsOfData As ObservableCollection(Of myType)
在哪里
myType --> ObservableCollection(Of myClass)
我知道你可以用结构来做到这一点,即:
Public Structure MyType
Public myOc as ObservableCollection(Of MyClass)
End Structure
Dim LotsOfData as ObservableCollection(of MyType)
但是您必须将其引用为(例如)
LotsOfData.Last.myOc(i)
代替
LotsOfData.Last(i)
这看起来很笨拙。这也显得笨拙:
For Each Data as ObservableCollection(of myClass) in LotsOfData
DoSomething(Data)
Next
同样
For Each Data as MyType in LotsOfData
DoSomething(Data.myOc)
Next
什么时候可以
For Each Data as MyType in LotsOfData
DoSomething(Data)
Next
有什么想法吗?
最佳答案
如何定义从通用集合的封闭类型派生的自定义类?例如:
public class MyType : ObservableCollection<MyClass>
{ }
然后你可以创建另一个泛型集合,其类型参数是你上面定义的类(它本身就是一个集合):
ObservableCollection<MyType> lotsOfData = new ObservableCollection<MyType>();
当你迭代它时,你会得到内部集合的序列:
foreach (ObservableCollection<MyClass> data in lotsOfData)
{
DoSomething(data);
}
编辑:如上所示派生将允许您从基础 ObservableCollection<T>
继承所有可访问成员类,但您将无法调用其(非默认)构造函数。因此,您通常希望使用与基类相同的重载来实现构造函数:
public class MyType : ObservableCollection<MyClass>
{
public MyType()
: base()
{ }
public MyType(IEnumerable<MyClass> collection)
: base(collection)
{ }
public MyType(List<MyClass> list)
: base(list)
{ }
}
关于c# - .NET - 自定义类型可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035638/