当前位置:  开发笔记 > 编程语言 > 正文

泛型语法

如何解决《泛型语法》经验,为你挑选了1个好方法。

这是一些我似乎无法理解其工作原理的代码.我知道它使用的是泛型,但where子句中的"new"是什么意思?

public class MediaPresenter
    where 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可以在课堂的任何地方被引用吗?



1> sassafrass..:

这是一些我似乎无法理解其工作原理的代码.我知道它使用的是泛型,但where子句中的"new"是什么意思?

where子句中的new()意味着T必须是可以实例化的类型.如果T没有无参数构造函数,则T不是作为类型参数传递给此类的有效类型.

请参阅http://msdn.microsoft.com/en-us/library/sd2w2ew5.aspx.

我还不了解LoadMedia方法中如何使用T?T可以在课堂的任何地方被引用吗?

是.T是类的类型参数,因此整个类都知道它.例如,在类中具有类型T的字段或返回T的方法也是有效的.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有