这是一些我似乎无法理解其工作原理的代码.我知道它使用的是泛型,但where子句中的"new"是什么意思?
public class MediaPresenterwhere T : Media, new() { public MediaPresenter(string mediaPath, params string[] extensions) { _mediaPath = mediaPath; _fileExtensions = extensions; } private void LoadMedia() { if(string.IsNullOrEmpty(_mediaPath)) return; _media = new ObservableCollection (); DirectoryInfo directoryInfo = new DirectoryInfo(_mediaPath); foreach(string extension in _fileExtensions) { FileInfo[] pictureFiles = directoryInfo.GetFiles( extension, SearchOption.AllDirectories ); foreach(FileInfo fileInfo in pictureFiles) { if(_media.Count == 50) break; T media = new T(); media.SetFile(fileInfo); _media.Add(media); } } } }
我还不了解LoadMedia方法中如何使用T?T可以在课堂的任何地方被引用吗?
这是一些我似乎无法理解其工作原理的代码.我知道它使用的是泛型,但where子句中的"new"是什么意思?
where子句中的new()意味着T必须是可以实例化的类型.如果T没有无参数构造函数,则T不是作为类型参数传递给此类的有效类型.
请参阅http://msdn.microsoft.com/en-us/library/sd2w2ew5.aspx.
我还不了解LoadMedia方法中如何使用T?T可以在课堂的任何地方被引用吗?
是.T是类的类型参数,因此整个类都知道它.例如,在类中具有类型T的字段或返回T的方法也是有效的.