返回IList但使用List

Bob*_*bbo 2 c# c#-2.0

是否可以声明方法的返回类型,例如IList小于您在内部定义的方法,例如List?它会编译运行吗?

   protected static IList<String> GetJobFiles(String folder, String fileExtension)
    {
        List<String> jobFiles = new List<String>();

        if (System.IO.Directory.Exists(folder))
        {
            string[] files = Directory.GetFiles(folder, fileExtension);

            // Check if for matching files
            if (files.Length > 0)
            {
                // add the files to our list collection
                jobFiles.AddRange(files);
            }

        }

        return jobFiles;
    }
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 8

这不仅是好的,而且是良好的实践以及将接口作为抽象的全部观点.请参阅LSP维基百科.

它允许您使用任何实现者IList<T>(因此,不仅仅是List<T>,如果您想要更改内部实现).

至于"它会编译运行"的问题 - 答案是肯定的,但是,我鼓励你自己尝试.您将比在此发布更多,更快地了解...

正如@Dan Tao评论,试着自己,但要确认(无论是在这里还是与有经验的同事).

  • 是的,*但*我强烈*劝阻*"为自己而不是在SO上发帖"的心态; 太多开发人员为自己尝试,发现某些东西有效,从此将其视为"魔术".我认为寻求一个社区的建议和指导是一个很好的习惯,这个社区的成员很可能对这个问题有所了解. (3认同)