c# - 这是什么语法,将接口(interface)初始化为类数组? (新的 IItemTransform[0])

标签 c# syntax interface initialization

new IItemTransform[0] 在 System.Web.Optimization.Bundle 中找到。我曾尝试用谷歌搜索有关此语法的任何内容,但由于搜索查询过于笼统的词而没有成功。

public virtual Bundle IncludeDirectory(string directoryVirtualPath, string searchPattern, bool searchSubdirectories)
    {
      if (ExceptionUtil.IsPureWildcardSearchPattern(searchPattern))
        throw new ArgumentException(OptimizationResources.InvalidWildcardSearchPattern, "searchPattern");
      PatternType patternType = PatternHelper.GetPatternType(searchPattern);
      Exception exception1 = PatternHelper.ValidatePattern(patternType, searchPattern, "virtualPaths");
      if (exception1 != null)
        throw exception1;
      Exception exception2 = this.Items.IncludeDirectory(directoryVirtualPath, searchPattern, patternType, searchSubdirectories, new IItemTransform[0]);
      if (exception2 != null)
        throw exception2;
      else
        return this;
    }

IItemTransform:

namespace System.Web.Optimization
{
  public interface IItemTransform
  {
    string Process(string includedVirtualPath, string input);
  }
}

这感觉真的很不直观,有人认识语法吗?

最佳答案

new IItemTransform[0] 只是创建一个类型为 IItemTransform 的引用数组(大小为零)。它不会创建任何实现 IItemTransform 的对象。

它在语法上与创建空字符串数组相同:

string[] foo;
foo = new string[0];

它只是一个IItemTransform的数组,不是string

关于c# - 这是什么语法,将接口(interface)初始化为类数组? (新的 IItemTransform[0]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20786559/

相关文章:

c# - 将 CommandParameter 设置为 ListBox 上当前点击的项目 (WP7)

java - 优雅的分支(任何语言)

syntax - Go 语法和接口(interface)作为函数的参数

c++ - 获取错误 : control reaches end of non-void function dont know why

c++ - 接口(interface)和子类

java - 接口(interface)只是 Java 的骨架,那么 CrudRepository 是如何提供所有 CRUD 操作的呢?

c# - TypeMock Isolator 与 Isolator Basic 完全兼容

c# - c# mongodb 文档是否应该继承自 BsonDocument

c# - 执行多个命令行并输出

php - 如何正确解释哈希方案的递归伪代码